app->bind(CompanyAddressWriter::class, EloquentCompanyAddressWriter::class); $this->app->bind(CompanyDataPurger::class, EloquentCompanyDataPurger::class); $this->app->bind(CompanyDefaultsProvisioner::class, EloquentBusinessDefaultsProvisioner::class); $this->app->bind(CompanyInvitationSender::class, LaravelCompanyInvitationSender::class); $this->app->bind(CompanyLogoManager::class, MediaLibraryCompanyLogoManager::class); $this->app->bind(MemberReferencesCleaner::class, EloquentMemberReferencesCleaner::class); $this->app->bind(UserAvatarManager::class, MediaLibraryUserAvatarManager::class); } public function boot(): void { Gate::policy(Company::class, CompanyPolicy::class); Gate::policy(User::class, UserPolicy::class); Gate::policy(Role::class, RolePolicy::class); // Ability names the controllers authorize against, each one routed to // the policy method that decides it. Registered in this order. $gates = [ 'create company' => [CompanyPolicy::class, 'create'], 'transfer company ownership' => [CompanyPolicy::class, 'transferOwnership'], 'delete company' => [CompanyPolicy::class, 'delete'], 'manage company' => [SettingsPolicy::class, 'manageCompany'], 'delete multiple users' => [UserPolicy::class, 'deleteMultiple'], 'owner only' => [OwnerPolicy::class, 'managedByOwner'], ]; foreach ($gates as $ability => $handler) { Gate::define($ability, $handler); } } }