您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

UserPanelProvider.php 3.8KB

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