id('server') ->path('server') ->homeUrl('/') ->spa(hasPrefetching: true) ->databaseNotifications() ->tenant(Server::class) ->brandName(config('app.name', 'Pelican')) ->brandLogo(config('app.logo')) ->brandLogoHeight('2rem') ->favicon(config('app.favicon', '/pelican.ico')) ->topNavigation(config('panel.filament.top-navigation', false)) ->maxContentWidth(config('panel.filament.display-width', 'screen-2xl')) ->login(Login::class) ->profile(EditProfile::class, false) ->passwordReset() ->multiFactorAuthentication([ AppAuthentication::make()->recoverable(), EmailAuthentication::make(), ]) ->userMenuItems([ 'profile' => fn (Action $action) => $action->label(auth()->user()->username)->url(fn () => EditProfile::getUrl(panel: 'app')), Action::make('toServerList') ->label('Server List') ->icon('tabler-brand-docker') ->url(fn () => ListServers::getUrl(panel: 'app')) ->sort(6), Action::make('toAdmin') ->label(trans('profile.admin')) ->icon('tabler-arrow-forward') ->url(fn () => Filament::getPanel('admin')->getUrl()) ->sort(5) ->visible(fn (): bool => auth()->user()->canAccessPanel(Filament::getPanel('admin'))), ]) ->navigationItems([ NavigationItem::make(trans('server/console.open_in_admin')) ->url(fn () => EditServer::getUrl(['record' => Filament::getTenant()], panel: 'admin')) ->visible(fn () => auth()->user()->canAccessPanel(Filament::getPanel('admin')) && auth()->user()->can('view server', Filament::getTenant())) ->icon('tabler-arrow-back') ->sort(99), ]) ->discoverResources(in: app_path('Filament/Server/Resources'), for: 'App\\Filament\\Server\\Resources') ->discoverPages(in: app_path('Filament/Server/Pages'), for: 'App\\Filament\\Server\\Pages') ->discoverWidgets(in: app_path('Filament/Server/Widgets'), for: 'App\\Filament\\Server\\Widgets') ->middleware([ EncryptCookies::class, AddQueuedCookiesToResponse::class, StartSession::class, AuthenticateSession::class, ShareErrorsFromSession::class, VerifyCsrfToken::class, SubstituteBindings::class, DisableBladeIconComponents::class, DispatchServingFilamentEvent::class, LanguageMiddleware::class, ServerSubject::class, ]) ->authMiddleware([ Authenticate::class, ]); } }