diff --git a/app-modules/identity/src/User/Models/User.php b/app-modules/identity/src/User/Models/User.php index e91b55c8..7cd0fa2d 100644 --- a/app-modules/identity/src/User/Models/User.php +++ b/app-modules/identity/src/User/Models/User.php @@ -7,6 +7,7 @@ use App\Concerns\HasAddress; use Carbon\CarbonInterface; use Filament\Models\Contracts\FilamentUser; +use Filament\Models\Contracts\HasAvatar; use Filament\Models\Contracts\HasName; use Filament\Panel; use He4rt\Gamification\Character\Models\Character; @@ -42,7 +43,7 @@ #[ObservedBy(classes: UserObserver::class)] #[Table(name: 'users')] #[Hidden('password', 'remember_token', 'email_verified_at')] -final class User extends Authenticatable implements FilamentUser, HasMedia, HasName +final class User extends Authenticatable implements FilamentUser, HasAvatar, HasMedia, HasName { use HasAddress; /** @use HasFactory */ @@ -96,10 +97,9 @@ public function canAccessPanel(Panel $panel): bool }; } - public function getFilamentAvatarUrl(): string + public function getFilamentAvatarUrl(): ?string { - - return sprintf('https://github.com/%s.png', $this->username); + return $this->getFirstMediaUrl('avatar') ?: null; } protected static function newFactory(): UserFactory diff --git a/app/Providers/Filament/AdminPanelProvider.php b/app/Providers/Filament/AdminPanelProvider.php index 123d9fcd..106338dc 100644 --- a/app/Providers/Filament/AdminPanelProvider.php +++ b/app/Providers/Filament/AdminPanelProvider.php @@ -7,6 +7,7 @@ use App\Enums\FilamentPanel; use App\Filament\Pages\Login; use App\Http\Middleware\SetApplicationLocale; +use Filament\Actions\Action; use Filament\Http\Middleware\Authenticate; use Filament\Http\Middleware\AuthenticateSession; use Filament\Http\Middleware\DisableBladeIconComponents; @@ -15,6 +16,7 @@ use Filament\PanelProvider; use Filament\Support\Colors\Color; use He4rt\PanelAdmin\Pages\Dashboard; +use He4rt\PanelApp\Pages\ProfilePage; use Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse; use Illuminate\Cookie\Middleware\EncryptCookies; use Illuminate\Foundation\Http\Middleware\PreventRequestForgery; @@ -60,6 +62,12 @@ public function panel(Panel $panel): Panel ->pages([ Dashboard::class, ]) + ->userMenuItems([ + 'profile' => fn (Action $action): Action => $action + ->label(__('app.user_menu.my_profile')) +->url(ProfilePage::getUrl(panel: FilamentPanel::App->value)) +->icon(null), + ]) ->authMiddleware([ Authenticate::class, ]); diff --git a/app/Providers/Filament/AppPanelProvider.php b/app/Providers/Filament/AppPanelProvider.php index bacc91b3..704fffca 100644 --- a/app/Providers/Filament/AppPanelProvider.php +++ b/app/Providers/Filament/AppPanelProvider.php @@ -6,6 +6,7 @@ use App\Enums\FilamentPanel; use App\Http\Middleware\SetApplicationLocale; +use Filament\Actions\Action; use Filament\Http\Middleware\Authenticate; use Filament\Http\Middleware\AuthenticateSession; use Filament\Http\Middleware\DisableBladeIconComponents; @@ -55,6 +56,12 @@ public function panel(Panel $panel): Panel ThreadPage::class, ProfilePage::class, ]) + ->userMenuItems([ + 'profile' => fn (Action $action): Action => $action + ->label(__('app.user_menu.my_profile')) +->url(ProfilePage::getUrl()), +->icon(null) + ]) ->middleware([ EncryptCookies::class, AddQueuedCookiesToResponse::class, diff --git a/lang/en/app.php b/lang/en/app.php index 8f8917c0..d8adca87 100644 --- a/lang/en/app.php +++ b/lang/en/app.php @@ -9,4 +9,8 @@ 'portuguese' => 'Português (Brasil)', 'portuguese_short' => 'PT-BR', ], + + 'user_menu' => [ + 'my_profile' => 'My profile', + ], ]; diff --git a/lang/pt_BR/app.php b/lang/pt_BR/app.php index 8f8917c0..5c4a7e45 100644 --- a/lang/pt_BR/app.php +++ b/lang/pt_BR/app.php @@ -9,4 +9,8 @@ 'portuguese' => 'Português (Brasil)', 'portuguese_short' => 'PT-BR', ], + + 'user_menu' => [ + 'my_profile' => 'Meu perfil', + ], ];