Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

FilamentCompaniesServiceProvider.php 6.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. <?php
  2. namespace App\Providers;
  3. use App\Actions\FilamentCompanies\{AddCompanyEmployee, CreateConnectedAccount, CreateNewUser, CreateUserFromProvider, DeleteCompany, DeleteUser, HandleInvalidState, InviteCompanyEmployee, RemoveCompanyEmployee, ResolveSocialiteUser, SetUserPassword, UpdateCompanyName, UpdateConnectedAccount, UpdateUserPassword, UpdateUserProfileInformation};
  4. use App\Filament\Company\Pages\CreateCompany;
  5. use App\Models\Company;
  6. use Filament\Http\Middleware\{Authenticate, DisableBladeIconComponents, DispatchServingFilamentEvent};
  7. use Filament\Navigation\MenuItem;
  8. use Filament\Support\Colors\Color;
  9. use Filament\{Pages, Panel, PanelProvider, Widgets};
  10. use Illuminate\Cookie\Middleware\{AddQueuedCookiesToResponse, EncryptCookies};
  11. use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken;
  12. use Illuminate\Routing\Middleware\SubstituteBindings;
  13. use Illuminate\Session\Middleware\{AuthenticateSession, StartSession};
  14. use Illuminate\Support\Facades\Auth;
  15. use Illuminate\View\Middleware\ShareErrorsFromSession;
  16. use Wallo\FilamentCompanies\Actions\GenerateRedirectForProvider;
  17. use Wallo\FilamentCompanies\Pages\Auth\{Login, Register};
  18. use Wallo\FilamentCompanies\Pages\Company\CompanySettings;
  19. use Wallo\FilamentCompanies\Pages\User\Profile;
  20. use Wallo\FilamentCompanies\{FilamentCompanies, Providers, Socialite};
  21. class FilamentCompaniesServiceProvider extends PanelProvider
  22. {
  23. public function panel(Panel $panel): Panel
  24. {
  25. return $panel
  26. ->default()
  27. ->id('company')
  28. ->path('company')
  29. ->login(Login::class)
  30. ->registration(Register::class)
  31. ->passwordReset()
  32. ->homeUrl(static fn (): string => url(Pages\Dashboard::getUrl(panel: 'company', tenant: Auth::user()?->personalCompany())))
  33. ->plugin(
  34. FilamentCompanies::make()
  35. ->userPanel('user')
  36. ->switchCurrentCompany()
  37. ->updateProfileInformation()
  38. ->updatePasswords()
  39. ->setPasswords()
  40. ->connectedAccounts()
  41. ->manageBrowserSessions()
  42. ->accountDeletion()
  43. ->profilePhotos()
  44. ->api()
  45. ->companies(invitations: true)
  46. ->termsAndPrivacyPolicy()
  47. ->notifications()
  48. ->modals()
  49. ->socialite(
  50. providers: [Providers::github()],
  51. features: [Socialite::rememberSession(), Socialite::providerAvatars()]
  52. ),
  53. )
  54. ->colors([
  55. 'primary' => Color::Indigo,
  56. ])
  57. ->viteTheme('resources/css/filament/company/theme.css')
  58. ->tenant(Company::class)
  59. ->tenantProfile(CompanySettings::class)
  60. ->tenantRegistration(CreateCompany::class)
  61. ->discoverResources(in: app_path('Filament/Company/Resources'), for: 'App\\Filament\\Company\\Resources')
  62. ->discoverPages(in: app_path('Filament/Company/Pages'), for: 'App\\Filament\\Company\\Pages')
  63. ->pages([
  64. Pages\Dashboard::class,
  65. ])
  66. ->userMenuItems([
  67. 'profile' => MenuItem::make()
  68. ->label('Profile')
  69. ->icon('heroicon-o-user-circle')
  70. ->url(static fn () => route(Profile::getRouteName(panel: 'user'))),
  71. ])
  72. ->authGuard('web')
  73. ->discoverWidgets(in: app_path('Filament/Company/Widgets'), for: 'App\\Filament\\Company\\Widgets')
  74. ->widgets([
  75. Widgets\AccountWidget::class,
  76. Widgets\FilamentInfoWidget::class,
  77. ])
  78. ->middleware([
  79. EncryptCookies::class,
  80. AddQueuedCookiesToResponse::class,
  81. StartSession::class,
  82. AuthenticateSession::class,
  83. ShareErrorsFromSession::class,
  84. VerifyCsrfToken::class,
  85. SubstituteBindings::class,
  86. DisableBladeIconComponents::class,
  87. DispatchServingFilamentEvent::class,
  88. ])
  89. ->authMiddleware([
  90. Authenticate::class,
  91. ]);
  92. }
  93. /**
  94. * Bootstrap any application services.
  95. */
  96. public function boot(): void
  97. {
  98. $this->configurePermissions();
  99. FilamentCompanies::createUsersUsing(CreateNewUser::class);
  100. FilamentCompanies::updateUserProfileInformationUsing(UpdateUserProfileInformation::class);
  101. FilamentCompanies::updateUserPasswordsUsing(UpdateUserPassword::class);
  102. FilamentCompanies::createCompaniesUsing(CreateCompany::class);
  103. FilamentCompanies::updateCompanyNamesUsing(UpdateCompanyName::class);
  104. FilamentCompanies::addCompanyEmployeesUsing(AddCompanyEmployee::class);
  105. FilamentCompanies::inviteCompanyEmployeesUsing(InviteCompanyEmployee::class);
  106. FilamentCompanies::removeCompanyEmployeesUsing(RemoveCompanyEmployee::class);
  107. FilamentCompanies::deleteCompaniesUsing(DeleteCompany::class);
  108. FilamentCompanies::deleteUsersUsing(DeleteUser::class);
  109. Socialite::resolvesSocialiteUsersUsing(ResolveSocialiteUser::class);
  110. Socialite::createUsersFromProviderUsing(CreateUserFromProvider::class);
  111. Socialite::createConnectedAccountsUsing(CreateConnectedAccount::class);
  112. Socialite::updateConnectedAccountsUsing(UpdateConnectedAccount::class);
  113. Socialite::setUserPasswordsUsing(SetUserPassword::class);
  114. Socialite::handlesInvalidStateUsing(HandleInvalidState::class);
  115. Socialite::generatesProvidersRedirectsUsing(GenerateRedirectForProvider::class);
  116. }
  117. /**
  118. * Configure the roles and permissions that are available within the application.
  119. */
  120. protected function configurePermissions(): void
  121. {
  122. FilamentCompanies::defaultApiTokenPermissions(['read']);
  123. FilamentCompanies::role('admin', 'Administrator', [
  124. 'create',
  125. 'read',
  126. 'update',
  127. 'delete',
  128. ])->description('Administrator users can perform any action.');
  129. FilamentCompanies::role('editor', 'Editor', [
  130. 'read',
  131. 'create',
  132. 'update',
  133. ])->description('Editor users have the ability to read, create, and update.');
  134. }
  135. }