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.
namespace App\Filament\AvatarProviders; use App\Models\User;use Filament\AvatarProviders\Contracts\AvatarProvider;use Illuminate\Database\Eloquent\Model; class GravatarsProvider implements AvatarProvider{ public function get(Model $authUser): string { /** @var User $user */ $user = $authUser; $hash = md5(strtolower(trim($user->email))); return "https://www.gravatar.com/avatar/{$hash}.jpg"; }}
Once you have this, it is as simple as registering it in config/filament.php
under the key default_avatar_provider
:
return [ /* |-------------------------------------------------------------------------- | Default Avatar Provider |-------------------------------------------------------------------------- | | This is the service that will be used to retrieve default avatars if one | has not been uploaded. | */ 'default_avatar_provider' => App\Filament\AvatarProviders\GravatarsProvider::class, ];
Important to know is that if null
is returned from the getFilamentAvatarUrl()
method, Filament will fall back to ui-avatars.com.