Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

FilamentCompaniesServiceProvider.php 4.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. <?php
  2. namespace App\Providers;
  3. use App\Actions\FilamentCompanies\AddCompanyEmployee;
  4. use App\Actions\FilamentCompanies\CreateCompany;
  5. use App\Actions\FilamentCompanies\CreateConnectedAccount;
  6. use App\Actions\FilamentCompanies\CreateUserFromProvider;
  7. use App\Actions\FilamentCompanies\DeleteCompany;
  8. use App\Actions\FilamentCompanies\DeleteUser;
  9. use App\Actions\FilamentCompanies\HandleInvalidState;
  10. use App\Actions\FilamentCompanies\InviteCompanyEmployee;
  11. use App\Actions\FilamentCompanies\RemoveCompanyEmployee;
  12. use App\Actions\FilamentCompanies\ResolveSocialiteUser;
  13. use App\Actions\FilamentCompanies\SetUserPassword;
  14. use App\Actions\FilamentCompanies\UpdateCompanyName;
  15. use App\Actions\FilamentCompanies\UpdateConnectedAccount;
  16. use Filament\Facades\Filament;
  17. use Filament\Navigation\UserMenuItem;
  18. use Illuminate\Http\RedirectResponse;
  19. use Illuminate\Support\Facades\Blade;
  20. use Illuminate\Support\ServiceProvider;
  21. use Wallo\FilamentCompanies\Actions\GenerateRedirectForProvider;
  22. use Wallo\FilamentCompanies\FilamentCompanies;
  23. use Wallo\FilamentCompanies\Pages\User\APITokens;
  24. use Wallo\FilamentCompanies\Pages\User\Profile;
  25. use Wallo\FilamentCompanies\Socialite;
  26. class FilamentCompaniesServiceProvider extends ServiceProvider
  27. {
  28. /**
  29. * Register any application services.
  30. */
  31. public function register(): void
  32. {
  33. //
  34. }
  35. /**
  36. * Bootstrap any application services.
  37. */
  38. public function boot(): void
  39. {
  40. if (FilamentCompanies::hasCompanyFeatures()) {
  41. Filament::registerRenderHook(
  42. 'global-search.end',
  43. static fn (): string => Blade::render('<x-filament-companies::dropdown.navigation-menu />'),
  44. );
  45. }
  46. Filament::serving(static function () {
  47. Filament::registerUserMenuItems([
  48. 'account' => UserMenuItem::make()->url(Profile::getUrl()),
  49. ]);
  50. });
  51. if (FilamentCompanies::hasApiFeatures()) {
  52. Filament::serving(static function () {
  53. Filament::registerUserMenuItems([
  54. UserMenuItem::make()
  55. ->label('API Tokens')
  56. ->icon('heroicon-s-lock-open')
  57. ->url(APITokens::getUrl()),
  58. ]);
  59. });
  60. }
  61. Filament::serving(static function () {
  62. Filament::registerUserMenuItems([
  63. 'logout' => UserMenuItem::make()->url(route('logout')),
  64. ]);
  65. });
  66. RedirectResponse::macro('banner', function ($message) {
  67. return $this->with('flash', [
  68. 'bannerStyle' => 'success',
  69. 'banner' => $message,
  70. ]);
  71. });
  72. RedirectResponse::macro('dangerBanner', function ($message) {
  73. return $this->with('flash', [
  74. 'bannerStyle' => 'danger',
  75. 'banner' => $message,
  76. ]);
  77. });
  78. Filament::registerRenderHook(
  79. 'content.start',
  80. static fn (): string => Blade::render('<x-filament-companies::banner />'),
  81. );
  82. $this->configurePermissions();
  83. FilamentCompanies::createCompaniesUsing(CreateCompany::class);
  84. FilamentCompanies::updateCompanyNamesUsing(UpdateCompanyName::class);
  85. FilamentCompanies::addCompanyEmployeesUsing(AddCompanyEmployee::class);
  86. FilamentCompanies::inviteCompanyEmployeesUsing(InviteCompanyEmployee::class);
  87. FilamentCompanies::removeCompanyEmployeesUsing(RemoveCompanyEmployee::class);
  88. FilamentCompanies::deleteCompaniesUsing(DeleteCompany::class);
  89. FilamentCompanies::deleteUsersUsing(DeleteUser::class);
  90. Socialite::resolvesSocialiteUsersUsing(ResolveSocialiteUser::class);
  91. Socialite::createUsersFromProviderUsing(CreateUserFromProvider::class);
  92. Socialite::createConnectedAccountsUsing(CreateConnectedAccount::class);
  93. Socialite::updateConnectedAccountsUsing(UpdateConnectedAccount::class);
  94. Socialite::setUserPasswordsUsing(SetUserPassword::class);
  95. Socialite::handlesInvalidStateUsing(HandleInvalidState::class);
  96. Socialite::generatesProvidersRedirectsUsing(GenerateRedirectForProvider::class);
  97. }
  98. /**
  99. * Configure the roles and permissions that are available within the application.
  100. */
  101. protected function configurePermissions(): void
  102. {
  103. FilamentCompanies::defaultApiTokenPermissions(['read']);
  104. FilamentCompanies::role('admin', 'Administrator', [
  105. 'create',
  106. 'read',
  107. 'update',
  108. 'delete',
  109. ])->description('Administrator users can perform any action.');
  110. FilamentCompanies::role('editor', 'Editor', [
  111. 'read',
  112. 'create',
  113. 'update',
  114. ])->description('Editor users have the ability to read, create, and update.');
  115. }
  116. }