2023-03-17 14:33:48 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
namespace App\Providers;
|
|
|
|
|
|
|
|
|
|
// use Illuminate\Support\Facades\Gate;
|
2026-06-04 09:03:06 +00:00
|
|
|
use App\Models\Application;
|
|
|
|
|
use App\Models\ApplicationPreview;
|
|
|
|
|
use App\Models\ApplicationSetting;
|
|
|
|
|
use App\Models\CloudInitScript;
|
|
|
|
|
use App\Models\CloudProviderToken;
|
|
|
|
|
use App\Models\DiscordNotificationSettings;
|
|
|
|
|
use App\Models\EmailNotificationSettings;
|
|
|
|
|
use App\Models\Environment;
|
|
|
|
|
use App\Models\EnvironmentVariable;
|
|
|
|
|
use App\Models\GithubApp;
|
|
|
|
|
use App\Models\InstanceSettings;
|
|
|
|
|
use App\Models\PrivateKey;
|
|
|
|
|
use App\Models\Project;
|
|
|
|
|
use App\Models\PushoverNotificationSettings;
|
2026-06-15 10:31:30 +00:00
|
|
|
use App\Models\S3Storage;
|
2026-06-04 09:03:06 +00:00
|
|
|
use App\Models\Server;
|
|
|
|
|
use App\Models\Service;
|
|
|
|
|
use App\Models\ServiceApplication;
|
|
|
|
|
use App\Models\ServiceDatabase;
|
|
|
|
|
use App\Models\SharedEnvironmentVariable;
|
|
|
|
|
use App\Models\SlackNotificationSettings;
|
|
|
|
|
use App\Models\StandaloneClickhouse;
|
|
|
|
|
use App\Models\StandaloneDocker;
|
|
|
|
|
use App\Models\StandaloneDragonfly;
|
|
|
|
|
use App\Models\StandaloneKeydb;
|
|
|
|
|
use App\Models\StandaloneMariadb;
|
|
|
|
|
use App\Models\StandaloneMongodb;
|
|
|
|
|
use App\Models\StandaloneMysql;
|
|
|
|
|
use App\Models\StandalonePostgresql;
|
|
|
|
|
use App\Models\StandaloneRedis;
|
|
|
|
|
use App\Models\SwarmDocker;
|
|
|
|
|
use App\Models\Team;
|
|
|
|
|
use App\Models\TelegramNotificationSettings;
|
|
|
|
|
use App\Models\WebhookNotificationSettings;
|
|
|
|
|
use App\Policies\ApiTokenPolicy;
|
|
|
|
|
use App\Policies\ApplicationPolicy;
|
|
|
|
|
use App\Policies\ApplicationPreviewPolicy;
|
|
|
|
|
use App\Policies\ApplicationSettingPolicy;
|
|
|
|
|
use App\Policies\CloudInitScriptPolicy;
|
|
|
|
|
use App\Policies\CloudProviderTokenPolicy;
|
|
|
|
|
use App\Policies\DatabasePolicy;
|
|
|
|
|
use App\Policies\EnvironmentPolicy;
|
|
|
|
|
use App\Policies\EnvironmentVariablePolicy;
|
|
|
|
|
use App\Policies\GithubAppPolicy;
|
|
|
|
|
use App\Policies\InstanceSettingsPolicy;
|
|
|
|
|
use App\Policies\NotificationPolicy;
|
|
|
|
|
use App\Policies\PrivateKeyPolicy;
|
|
|
|
|
use App\Policies\ProjectPolicy;
|
2025-08-24 15:14:33 +00:00
|
|
|
use App\Policies\ResourceCreatePolicy;
|
2026-06-15 10:31:30 +00:00
|
|
|
use App\Policies\S3StoragePolicy;
|
2026-06-04 09:03:06 +00:00
|
|
|
use App\Policies\ServerPolicy;
|
|
|
|
|
use App\Policies\ServiceApplicationPolicy;
|
|
|
|
|
use App\Policies\ServiceDatabasePolicy;
|
|
|
|
|
use App\Policies\ServicePolicy;
|
|
|
|
|
use App\Policies\SharedEnvironmentVariablePolicy;
|
|
|
|
|
use App\Policies\StandaloneDockerPolicy;
|
|
|
|
|
use App\Policies\SwarmDockerPolicy;
|
|
|
|
|
use App\Policies\TeamPolicy;
|
2023-03-17 14:33:48 +00:00
|
|
|
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
|
2025-08-24 15:14:33 +00:00
|
|
|
use Illuminate\Support\Facades\Gate;
|
2026-06-04 09:03:06 +00:00
|
|
|
use Laravel\Sanctum\PersonalAccessToken;
|
2023-03-17 14:33:48 +00:00
|
|
|
|
|
|
|
|
class AuthServiceProvider extends ServiceProvider
|
|
|
|
|
{
|
|
|
|
|
/**
|
|
|
|
|
* The model to policy mappings for the application.
|
|
|
|
|
*
|
|
|
|
|
* @var array<class-string, class-string>
|
|
|
|
|
*/
|
|
|
|
|
protected $policies = [
|
2026-06-04 09:03:06 +00:00
|
|
|
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,
|
2025-08-23 16:50:50 +00:00
|
|
|
// Database policies - all use the shared DatabasePolicy
|
2026-06-04 09:03:06 +00:00
|
|
|
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,
|
2025-08-24 15:14:33 +00:00
|
|
|
|
2025-08-26 08:27:31 +00:00
|
|
|
// Notification policies - all use the shared NotificationPolicy
|
2026-06-04 09:03:06 +00:00
|
|
|
EmailNotificationSettings::class => NotificationPolicy::class,
|
|
|
|
|
DiscordNotificationSettings::class => NotificationPolicy::class,
|
|
|
|
|
TelegramNotificationSettings::class => NotificationPolicy::class,
|
|
|
|
|
SlackNotificationSettings::class => NotificationPolicy::class,
|
|
|
|
|
PushoverNotificationSettings::class => NotificationPolicy::class,
|
|
|
|
|
WebhookNotificationSettings::class => NotificationPolicy::class,
|
2025-08-26 08:27:31 +00:00
|
|
|
|
|
|
|
|
// API Token policy
|
2026-06-04 09:03:06 +00:00
|
|
|
PersonalAccessToken::class => ApiTokenPolicy::class,
|
2025-08-26 08:27:31 +00:00
|
|
|
|
2025-11-25 15:40:35 +00:00
|
|
|
// Instance settings policy
|
2026-06-04 09:03:06 +00:00
|
|
|
InstanceSettings::class => InstanceSettingsPolicy::class,
|
2025-11-25 15:40:35 +00:00
|
|
|
|
2026-06-15 10:31:30 +00:00
|
|
|
// S3 storage policy
|
|
|
|
|
S3Storage::class => S3StoragePolicy::class,
|
|
|
|
|
|
2025-08-26 08:27:31 +00:00
|
|
|
// Team policy
|
2026-06-04 09:03:06 +00:00
|
|
|
Team::class => TeamPolicy::class,
|
2025-08-26 08:27:31 +00:00
|
|
|
|
|
|
|
|
// Git source policies
|
2026-06-04 09:03:06 +00:00
|
|
|
GithubApp::class => GithubAppPolicy::class,
|
|
|
|
|
CloudProviderToken::class => CloudProviderTokenPolicy::class,
|
|
|
|
|
CloudInitScript::class => CloudInitScriptPolicy::class,
|
2025-08-26 08:27:31 +00:00
|
|
|
|
2023-03-17 14:33:48 +00:00
|
|
|
];
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Register any authentication / authorization services.
|
|
|
|
|
*/
|
|
|
|
|
public function boot(): void
|
|
|
|
|
{
|
2025-08-24 15:14:33 +00:00
|
|
|
// Register gates for resource creation policy
|
|
|
|
|
Gate::define('createAnyResource', [ResourceCreatePolicy::class, 'createAny']);
|
2025-08-26 08:27:31 +00:00
|
|
|
|
|
|
|
|
// Register gate for terminal access
|
|
|
|
|
Gate::define('canAccessTerminal', function ($user) {
|
2025-08-28 08:48:24 +00:00
|
|
|
return $user->isAdmin() || $user->isOwner();
|
2025-08-26 08:27:31 +00:00
|
|
|
});
|
2023-03-17 14:33:48 +00:00
|
|
|
}
|
|
|
|
|
}
|