Top right user menu

This commit is contained in:
Lance Pioch 2024-04-06 10:11:10 -04:00
parent a133503256
commit b0067c4e4b
2 changed files with 20 additions and 1 deletions

View File

@ -6,6 +6,8 @@ use App\Exceptions\DisplayException;
use App\Rules\Username; use App\Rules\Username;
use App\Facades\Activity; use App\Facades\Activity;
use Filament\Models\Contracts\FilamentUser; use Filament\Models\Contracts\FilamentUser;
use Filament\Models\Contracts\HasAvatar;
use Filament\Models\Contracts\HasName;
use Filament\Panel; use Filament\Panel;
use Illuminate\Support\Str; use Illuminate\Support\Str;
use Illuminate\Validation\Rules\In; use Illuminate\Validation\Rules\In;
@ -81,7 +83,7 @@ use App\Notifications\SendPasswordReset as ResetPasswordNotification;
* *
* @mixin \Eloquent * @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 Authenticatable;
use Authorizable {can as protected canned; } use Authorizable {can as protected canned; }
@ -338,4 +340,14 @@ class User extends Model implements AuthenticatableContract, AuthorizableContrac
{ {
return $this->root_admin; 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));
}
} }

View File

@ -5,11 +5,13 @@ namespace App\Providers\Filament;
use Filament\Http\Middleware\Authenticate; use Filament\Http\Middleware\Authenticate;
use Filament\Http\Middleware\DisableBladeIconComponents; use Filament\Http\Middleware\DisableBladeIconComponents;
use Filament\Http\Middleware\DispatchServingFilamentEvent; use Filament\Http\Middleware\DispatchServingFilamentEvent;
use Filament\Navigation\MenuItem;
use Filament\Pages; use Filament\Pages;
use Filament\Panel; use Filament\Panel;
use Filament\PanelProvider; use Filament\PanelProvider;
use Filament\Support\Colors\Color; use Filament\Support\Colors\Color;
use Filament\Widgets; use Filament\Widgets;
use Illuminate\Contracts\Auth\Guard;
use Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse; use Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse;
use Illuminate\Cookie\Middleware\EncryptCookies; use Illuminate\Cookie\Middleware\EncryptCookies;
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken; use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken;
@ -30,6 +32,11 @@ class AdminPanelProvider extends PanelProvider
->brandName('Pelican') ->brandName('Pelican')
->homeUrl('/') ->homeUrl('/')
->favicon('/favicon.ico') ->favicon('/favicon.ico')
->userMenuItems([
'profile' => MenuItem::make()
->label('Edit profile')
->url(fn (Guard $guard) => '/panel/users/' . $guard->id() . '/edit'),
])
->colors([ ->colors([
'danger' => Color::Red, 'danger' => Color::Red,
'gray' => Color::Zinc, 'gray' => Color::Zinc,