diff --git a/config/filament.php b/config/filament.php index 65885f1bb2..bbae981db6 100644 --- a/config/filament.php +++ b/config/filament.php @@ -1,5 +1,7 @@ [ 'guard' => env('FILAMENT_AUTH_GUARD', 'filament'), + 'avatar_provider' => GravatarProvider::class, ], /* diff --git a/src/AvatarProviders/Contracts/AvatarProvider.php b/src/AvatarProviders/Contracts/AvatarProvider.php index eeb82ba867..ed2d9a8b9c 100644 --- a/src/AvatarProviders/Contracts/AvatarProvider.php +++ b/src/AvatarProviders/Contracts/AvatarProvider.php @@ -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); } diff --git a/src/AvatarProviders/GravatarProvider.php b/src/AvatarProviders/GravatarProvider.php index b4efc3b2a4..e630249429 100644 --- a/src/AvatarProviders/GravatarProvider.php +++ b/src/AvatarProviders/GravatarProvider.php @@ -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); } } diff --git a/src/AvatarProviders/UiAvatarProvider.php b/src/AvatarProviders/UiAvatarProvider.php new file mode 100644 index 0000000000..ab46a4f5b9 --- /dev/null +++ b/src/AvatarProviders/UiAvatarProvider.php @@ -0,0 +1,13 @@ +name).'&color=7F9CF5&background=EBF4FF&size='.$size * $dpr; + } +} diff --git a/src/Filament.php b/src/Filament.php index 289a40b687..991f1af688 100644 --- a/src/Filament.php +++ b/src/Filament.php @@ -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() diff --git a/src/FilamentManager.php b/src/FilamentManager.php index 3bc3edb1fc..d2162bc639 100644 --- a/src/FilamentManager.php +++ b/src/FilamentManager.php @@ -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(); diff --git a/src/View/Components/Avatar.php b/src/View/Components/Avatar.php index 4c479c495e..e1f85607ec 100644 --- a/src/View/Components/Avatar.php +++ b/src/View/Components/Avatar.php @@ -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(