Out of the box, Filament uses ui-avatars.com to generate avatars based on a user's name. To provide your own avatar URLs, you can implement the HasAvatar
contract.
So, if you want to support gravatar.com, you can start with creating a custom AvatarProvider.
1namespace App\Filament\AvatarProviders;
2
3use App\Models\User;
4use Filament\AvatarProviders\Contracts\AvatarProvider;
5use Illuminate\Database\Eloquent\Model;
6
7class GravatarsProvider implements AvatarProvider
8{
9 public function get(Model $authUser): string
10 {
11 /** @var User $user */
12 $user = $authUser;
13
14 $hash = md5(strtolower(trim($user->email)));
15 return "https://www.gravatar.com/avatar/{$hash}.jpg";
16 }
17}
Once you have this, it is as simple as registering it in config/filament.php
under the key default_avatar_provider
:
1return [
2
3 /*
4 |--------------------------------------------------------------------------
5 | Default Avatar Provider
6 |--------------------------------------------------------------------------
7 |
8 | This is the service that will be used to retrieve default avatars if one
9 | has not been uploaded.
10 |
11 */
12
13 'default_avatar_provider' => App\Filament\AvatarProviders\GravatarsProvider::class,
14
15];
Important to know is that if null
is returned from the getFilamentAvatarUrl()
method, Filament will fall back to ui-avatars.com.
If this post was enjoyable or useful for you, please share it! If you have comments, questions, or feedback, you can email my personal email. To get new posts, subscribe use the RSS feed.