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.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <?php
  2. namespace App\Providers\Filament;
  3. use App\Filament\Components\PanelShiftDropdown;
  4. use App\Filament\User\Clusters\Account;
  5. use App\Http\Middleware\Authenticate;
  6. use Exception;
  7. use Filament\Http\Middleware\DisableBladeIconComponents;
  8. use Filament\Http\Middleware\DispatchServingFilamentEvent;
  9. use Filament\Navigation\NavigationBuilder;
  10. use Filament\Navigation\NavigationItem;
  11. use Filament\Pages;
  12. use Filament\Panel;
  13. use Filament\PanelProvider;
  14. use Filament\Support\Colors\Color;
  15. use Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse;
  16. use Illuminate\Cookie\Middleware\EncryptCookies;
  17. use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken;
  18. use Illuminate\Routing\Middleware\SubstituteBindings;
  19. use Illuminate\Session\Middleware\AuthenticateSession;
  20. use Illuminate\Session\Middleware\StartSession;
  21. use Illuminate\View\Middleware\ShareErrorsFromSession;
  22. use Wallo\FilamentCompanies\Pages\User\PersonalAccessTokens;
  23. use Wallo\FilamentCompanies\Pages\User\Profile;
  24. class UserPanelProvider extends PanelProvider
  25. {
  26. /**
  27. * @throws Exception
  28. */
  29. public function panel(Panel $panel): Panel
  30. {
  31. return $panel
  32. ->id('user')
  33. ->path('user')
  34. ->plugin(
  35. PanelShiftDropdown::make()
  36. ->logoutItem()
  37. ->companySettings(false)
  38. ->navigation(function (NavigationBuilder $builder): NavigationBuilder {
  39. return $builder
  40. ->items([
  41. ...Account::getNavigationItems(),
  42. NavigationItem::make('company')
  43. ->label('Company Dashboard')
  44. ->icon('heroicon-s-building-office-2')
  45. ->url(static fn (): string => Pages\Dashboard::getUrl(panel: 'company', tenant: auth()->user()->personalCompany())),
  46. ]);
  47. }),
  48. )
  49. ->colors([
  50. 'primary' => Color::Indigo,
  51. ])
  52. ->navigation(false)
  53. ->viteTheme('resources/css/filament/user/theme.css')
  54. ->brandLogo(static fn () => view('components.icons.logo'))
  55. ->discoverResources(in: app_path('Filament/User/Resources'), for: 'App\\Filament\\User\\Resources')
  56. ->discoverPages(in: app_path('Filament/User/Pages'), for: 'App\\Filament\\User\\Pages')
  57. ->discoverClusters(in: app_path('Filament/User/Clusters'), for: 'App\\Filament\\User\\Clusters')
  58. ->discoverWidgets(in: app_path('Filament/User/Widgets'), for: 'App\\Filament\\User\\Widgets')
  59. ->pages([
  60. Profile::class,
  61. PersonalAccessTokens::class,
  62. ])
  63. ->widgets([
  64. //
  65. ])
  66. ->middleware([
  67. EncryptCookies::class,
  68. AddQueuedCookiesToResponse::class,
  69. StartSession::class,
  70. AuthenticateSession::class,
  71. ShareErrorsFromSession::class,
  72. VerifyCsrfToken::class,
  73. SubstituteBindings::class,
  74. DisableBladeIconComponents::class,
  75. DispatchServingFilamentEvent::class,
  76. ])
  77. ->authMiddleware([
  78. Authenticate::class,
  79. ]);
  80. }
  81. }