| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 | 
							- <?php
 - 
 - namespace App\Providers;
 - 
 - use App\Actions\FilamentCompanies\AddCompanyEmployee;
 - use App\Actions\FilamentCompanies\CreateCompany;
 - use App\Actions\FilamentCompanies\CreateConnectedAccount;
 - use App\Actions\FilamentCompanies\CreateUserFromProvider;
 - use App\Actions\FilamentCompanies\DeleteCompany;
 - use App\Actions\FilamentCompanies\DeleteUser;
 - use App\Actions\FilamentCompanies\HandleInvalidState;
 - use App\Actions\FilamentCompanies\InviteCompanyEmployee;
 - use App\Actions\FilamentCompanies\RemoveCompanyEmployee;
 - use App\Actions\FilamentCompanies\ResolveSocialiteUser;
 - use App\Actions\FilamentCompanies\SetUserPassword;
 - use App\Actions\FilamentCompanies\UpdateCompanyName;
 - use App\Actions\FilamentCompanies\UpdateConnectedAccount;
 - use Filament\Facades\Filament;
 - use Filament\Navigation\UserMenuItem;
 - use Illuminate\Http\RedirectResponse;
 - use Illuminate\Support\Facades\Blade;
 - use Illuminate\Support\ServiceProvider;
 - use Wallo\FilamentCompanies\Actions\GenerateRedirectForProvider;
 - use Wallo\FilamentCompanies\FilamentCompanies;
 - use Wallo\FilamentCompanies\Pages\User\APITokens;
 - use Wallo\FilamentCompanies\Pages\User\Profile;
 - use Wallo\FilamentCompanies\Socialite;
 - 
 - class FilamentCompaniesServiceProvider extends ServiceProvider
 - {
 -     /**
 -      * Register any application services.
 -      */
 -     public function register(): void
 -     {
 -         //
 -     }
 - 
 -     /**
 -      * Bootstrap any application services.
 -      */
 -     public function boot(): void
 -     {
 -         if (FilamentCompanies::hasCompanyFeatures()) {
 -             Filament::registerRenderHook(
 -                 'global-search.end',
 -                 static fn (): string => Blade::render('<x-filament-companies::dropdown.navigation-menu />'),
 -             );
 -         }
 - 
 -         Filament::serving(static function () {
 -             Filament::registerUserMenuItems([
 -                 'account' => UserMenuItem::make()->url(Profile::getUrl()),
 -             ]);
 -         });
 - 
 -         if (FilamentCompanies::hasApiFeatures()) {
 -             Filament::serving(static function () {
 -                 Filament::registerUserMenuItems([
 -                     UserMenuItem::make()
 -                         ->label('API Tokens')
 -                         ->icon('heroicon-s-lock-open')
 -                         ->url(APITokens::getUrl()),
 -                 ]);
 -             });
 -         }
 - 
 -         Filament::serving(static function () {
 -             Filament::registerUserMenuItems([
 -                 'logout' => UserMenuItem::make()->url(route('logout')),
 -             ]);
 -         });
 - 
 -         RedirectResponse::macro('banner', function ($message) {
 -             return $this->with('flash', [
 -                 'bannerStyle' => 'success',
 -                 'banner' => $message,
 -             ]);
 -         });
 - 
 -         RedirectResponse::macro('dangerBanner', function ($message) {
 -             return $this->with('flash', [
 -                 'bannerStyle' => 'danger',
 -                 'banner' => $message,
 -             ]);
 -         });
 - 
 -         Filament::registerRenderHook(
 -             'content.start',
 -             static fn (): string => Blade::render('<x-filament-companies::banner />'),
 -         );
 - 
 -         $this->configurePermissions();
 - 
 -         FilamentCompanies::createCompaniesUsing(CreateCompany::class);
 -         FilamentCompanies::updateCompanyNamesUsing(UpdateCompanyName::class);
 -         FilamentCompanies::addCompanyEmployeesUsing(AddCompanyEmployee::class);
 -         FilamentCompanies::inviteCompanyEmployeesUsing(InviteCompanyEmployee::class);
 -         FilamentCompanies::removeCompanyEmployeesUsing(RemoveCompanyEmployee::class);
 -         FilamentCompanies::deleteCompaniesUsing(DeleteCompany::class);
 -         FilamentCompanies::deleteUsersUsing(DeleteUser::class);
 - 
 -         Socialite::resolvesSocialiteUsersUsing(ResolveSocialiteUser::class);
 -         Socialite::createUsersFromProviderUsing(CreateUserFromProvider::class);
 -         Socialite::createConnectedAccountsUsing(CreateConnectedAccount::class);
 -         Socialite::updateConnectedAccountsUsing(UpdateConnectedAccount::class);
 -         Socialite::setUserPasswordsUsing(SetUserPassword::class);
 -         Socialite::handlesInvalidStateUsing(HandleInvalidState::class);
 -         Socialite::generatesProvidersRedirectsUsing(GenerateRedirectForProvider::class);
 -     }
 - 
 -     /**
 -      * Configure the roles and permissions that are available within the application.
 -      */
 -     protected function configurePermissions(): void
 -     {
 -         FilamentCompanies::defaultApiTokenPermissions(['read']);
 - 
 -         FilamentCompanies::role('admin', 'Administrator', [
 -             'create',
 -             'read',
 -             'update',
 -             'delete',
 -         ])->description('Administrator users can perform any action.');
 - 
 -         FilamentCompanies::role('editor', 'Editor', [
 -             'read',
 -             'create',
 -             'update',
 -         ])->description('Editor users have the ability to read, create, and update.');
 -     }
 - }
 
 
  |