You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

UserPanelProvider.php 3.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. <?php
  2. namespace App\Providers\Filament;
  3. use App\Http\Middleware\Authenticate;
  4. use Filament\Http\Middleware\{DisableBladeIconComponents, DispatchServingFilamentEvent};
  5. use Filament\Navigation\{MenuItem, NavigationItem};
  6. use Filament\Support\Colors\Color;
  7. use Filament\{Pages, Panel, PanelProvider, Widgets};
  8. use Illuminate\Cookie\Middleware\{AddQueuedCookiesToResponse, EncryptCookies};
  9. use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken;
  10. use Illuminate\Routing\Middleware\SubstituteBindings;
  11. use Illuminate\Session\Middleware\{AuthenticateSession, StartSession};
  12. use Illuminate\Support\Facades\Auth;
  13. use Illuminate\View\Middleware\ShareErrorsFromSession;
  14. use Wallo\FilamentCompanies\Pages\User\{PersonalAccessTokens, Profile};
  15. class UserPanelProvider extends PanelProvider
  16. {
  17. public function panel(Panel $panel): Panel
  18. {
  19. return $panel
  20. ->id('user')
  21. ->path('user')
  22. ->userMenuItems([
  23. 'profile' => MenuItem::make()
  24. ->label('Profile')
  25. ->icon('heroicon-o-user-circle')
  26. ->url(static fn () => url(Profile::getUrl())),
  27. MenuItem::make()
  28. ->label('Company')
  29. ->icon('heroicon-o-building-office')
  30. ->url(static fn () => url(Pages\Dashboard::getUrl(panel: 'company', tenant: Auth::user()?->personalCompany()))),
  31. ])
  32. ->navigationItems([
  33. NavigationItem::make('Personal Access Tokens')
  34. ->label(static fn (): string => __('filament-companies::default.navigation.links.tokens'))
  35. ->icon('heroicon-o-key')
  36. ->url(static fn () => url(PersonalAccessTokens::getUrl())),
  37. ])
  38. ->colors([
  39. 'primary' => Color::Indigo,
  40. ])
  41. ->viteTheme('resources/css/filament/user/theme.css')
  42. ->discoverResources(in: app_path('Filament/User/Resources'), for: 'App\\Filament\\User\\Resources')
  43. ->discoverPages(in: app_path('Filament/User/Pages'), for: 'App\\Filament\\User\\Pages')
  44. ->pages([
  45. Pages\Dashboard::class,
  46. Profile::class,
  47. PersonalAccessTokens::class,
  48. ])
  49. ->discoverWidgets(in: app_path('Filament/User/Widgets'), for: 'App\\Filament\\User\\Widgets')
  50. ->widgets([
  51. Widgets\AccountWidget::class,
  52. Widgets\FilamentInfoWidget::class,
  53. ])
  54. ->middleware([
  55. EncryptCookies::class,
  56. AddQueuedCookiesToResponse::class,
  57. StartSession::class,
  58. AuthenticateSession::class,
  59. ShareErrorsFromSession::class,
  60. VerifyCsrfToken::class,
  61. SubstituteBindings::class,
  62. DisableBladeIconComponents::class,
  63. DispatchServingFilamentEvent::class,
  64. ])
  65. ->authMiddleware([
  66. Authenticate::class,
  67. ]);
  68. }
  69. }