mirror of
https://github.com/filamentphp/filament.git
synced 2026-09-24 15:42:09 +08:00
feature: add new avatar providers
This commit is contained in:
@@ -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,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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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()
|
||||
|
||||
@@ -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,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(
|
||||
|
||||
Reference in New Issue
Block a user