feature: add new avatar providers

This commit is contained in:
Ryan Chandler
2021-03-10 18:33:01 +00:00
parent 279a9c33cd
commit bcb806f626
7 changed files with 30 additions and 4 deletions
+3
View File
@@ -1,5 +1,7 @@
<?php
use Filament\GravatarProvider;
return [
/*
@@ -38,6 +40,7 @@ return [
'auth' => [
'guard' => env('FILAMENT_AUTH_GUARD', 'filament'),
'avatar_provider' => GravatarProvider::class,
],
/*
@@ -6,5 +6,5 @@ use Filament\Models\Contracts\FilamentUser;
interface AvatarProvider
{
public function get(FilamentUser $user);
public function get(FilamentUser $user, $size = 48, $dpr = 1);
}
+3 -2
View File
@@ -3,11 +3,12 @@
namespace Filament;
use Filament\Models\Contracts\FilamentUser;
use Thomaswelton\LaravelGravatar\Facades\Gravatar;
class GravatarProvider implements Contracts\AvatarProvider
{
public function get(FilamentUser $user)
public function get(FilamentUser $user, $size = 48, $dpr = 1)
{
return Gravatar::src($user->email, $size * $dpr);
}
}
+13
View File
@@ -0,0 +1,13 @@
<?php
namespace Filament\AvatarProviders;
use Filament\Models\Contracts\FilamentUser;
class UiAvatarProvider implements Contracts\AvatarProvider
{
public function get(FilamentUser $user, $size = 48, $dpr = 1)
{
return 'https://ui-avatars.com/api/?name='.urlencode($user->name).'&color=7F9CF5&background=EBF4FF&size='.$size * $dpr;
}
}
+1
View File
@@ -8,6 +8,7 @@ use Illuminate\Support\Facades\Facade;
/**
* @method static StatefulGuard auth()
* @method static \Filament\AvatarProviders\Contracts\AvatarProvider avatarProvider()
* @method static bool can(string $action, object|string $target)
* @method static array getAuthorizations()
* @method static array getPages()
+7
View File
@@ -34,6 +34,13 @@ class FilamentManager
return Auth::guard(config('filament.auth.guard', 'filament'));
}
public function avatarProvider()
{
$provider = config('filament.auth.avatar_provider', GravatarProvider::class);
return new $provider;
}
public function can($action, $target)
{
$user = $this->auth()->user();
+2 -1
View File
@@ -2,6 +2,7 @@
namespace Filament\View\Components;
use Filament\Filament;
use Illuminate\View\Component;
use Thomaswelton\LaravelGravatar\Facades\Gravatar;
use function Filament\get_image_url;
@@ -26,7 +27,7 @@ class Avatar extends Component
$avatar = $this->user->getFilamentAvatar();
if ($avatar === null) {
return Gravatar::src($this->user->email, $this->size * $dpr);
return Filament::avatarProvider()->get($this->user, $this->size, $dpr);
}
return get_image_url(