*/ protected $policies = [ Server::class => ServerPolicy::class, PrivateKey::class => PrivateKeyPolicy::class, StandaloneDocker::class => StandaloneDockerPolicy::class, SwarmDocker::class => SwarmDockerPolicy::class, Application::class => ApplicationPolicy::class, ApplicationPreview::class => ApplicationPreviewPolicy::class, ApplicationSetting::class => ApplicationSettingPolicy::class, Service::class => ServicePolicy::class, ServiceApplication::class => ServiceApplicationPolicy::class, ServiceDatabase::class => ServiceDatabasePolicy::class, Project::class => ProjectPolicy::class, Environment::class => EnvironmentPolicy::class, EnvironmentVariable::class => EnvironmentVariablePolicy::class, SharedEnvironmentVariable::class => SharedEnvironmentVariablePolicy::class, // Database policies - all use the shared DatabasePolicy StandalonePostgresql::class => DatabasePolicy::class, StandaloneMysql::class => DatabasePolicy::class, StandaloneMariadb::class => DatabasePolicy::class, StandaloneMongodb::class => DatabasePolicy::class, StandaloneRedis::class => DatabasePolicy::class, StandaloneKeydb::class => DatabasePolicy::class, StandaloneDragonfly::class => DatabasePolicy::class, StandaloneClickhouse::class => DatabasePolicy::class, // Notification policies - all use the shared NotificationPolicy EmailNotificationSettings::class => NotificationPolicy::class, DiscordNotificationSettings::class => NotificationPolicy::class, TelegramNotificationSettings::class => NotificationPolicy::class, SlackNotificationSettings::class => NotificationPolicy::class, PushoverNotificationSettings::class => NotificationPolicy::class, WebhookNotificationSettings::class => NotificationPolicy::class, // API Token policy PersonalAccessToken::class => ApiTokenPolicy::class, // Instance settings policy InstanceSettings::class => InstanceSettingsPolicy::class, // S3 storage policy S3Storage::class => S3StoragePolicy::class, // Team policy Team::class => TeamPolicy::class, // Git source policies GithubApp::class => GithubAppPolicy::class, CloudProviderToken::class => CloudProviderTokenPolicy::class, CloudInitScript::class => CloudInitScriptPolicy::class, ]; /** * Register any authentication / authorization services. */ public function boot(): void { // Register gates for resource creation policy Gate::define('createAnyResource', [ResourceCreatePolicy::class, 'createAny']); // Register gate for terminal access Gate::define('canAccessTerminal', function ($user) { return $user->isAdmin() || $user->isOwner(); }); } }