diff --git a/app/Models/User.php b/app/Models/User.php index 6c17ddc6b..ca6af6258 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -6,6 +6,8 @@ use App\Exceptions\DisplayException; use App\Rules\Username; use App\Facades\Activity; use Filament\Models\Contracts\FilamentUser; +use Filament\Models\Contracts\HasAvatar; +use Filament\Models\Contracts\HasName; use Filament\Panel; use Illuminate\Support\Str; use Illuminate\Validation\Rules\In; @@ -81,7 +83,7 @@ use App\Notifications\SendPasswordReset as ResetPasswordNotification; * * @mixin \Eloquent */ -class User extends Model implements AuthenticatableContract, AuthorizableContract, CanResetPasswordContract, FilamentUser +class User extends Model implements AuthenticatableContract, AuthorizableContract, CanResetPasswordContract, FilamentUser, HasName, HasAvatar { use Authenticatable; use Authorizable {can as protected canned; } @@ -338,4 +340,14 @@ class User extends Model implements AuthenticatableContract, AuthorizableContrac { return $this->root_admin; } + + public function getFilamentName(): string + { + return $this->name_first ?: $this->username; + } + + public function getFilamentAvatarUrl(): ?string + { + return 'https://gravatar.com/avatar/' . md5(strtolower($this->email)); + } } diff --git a/app/Providers/Filament/AdminPanelProvider.php b/app/Providers/Filament/AdminPanelProvider.php index 7d0409d16..7c55f6145 100644 --- a/app/Providers/Filament/AdminPanelProvider.php +++ b/app/Providers/Filament/AdminPanelProvider.php @@ -5,11 +5,13 @@ namespace App\Providers\Filament; use Filament\Http\Middleware\Authenticate; use Filament\Http\Middleware\DisableBladeIconComponents; use Filament\Http\Middleware\DispatchServingFilamentEvent; +use Filament\Navigation\MenuItem; use Filament\Pages; use Filament\Panel; use Filament\PanelProvider; use Filament\Support\Colors\Color; use Filament\Widgets; +use Illuminate\Contracts\Auth\Guard; use Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse; use Illuminate\Cookie\Middleware\EncryptCookies; use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken; @@ -30,6 +32,11 @@ class AdminPanelProvider extends PanelProvider ->brandName('Pelican') ->homeUrl('/') ->favicon('/favicon.ico') + ->userMenuItems([ + 'profile' => MenuItem::make() + ->label('Edit profile') + ->url(fn (Guard $guard) => '/panel/users/' . $guard->id() . '/edit'), + ]) ->colors([ 'danger' => Color::Red, 'gray' => Color::Zinc,