diff --git a/app/Policies/S3StoragePolicy.php b/app/Policies/S3StoragePolicy.php index 4f837a3dd..9b24dd31a 100644 --- a/app/Policies/S3StoragePolicy.php +++ b/app/Policies/S3StoragePolicy.php @@ -29,7 +29,7 @@ class S3StoragePolicy */ public function create(User $user): bool { - return true; + return $user->isAdmin(); } /** diff --git a/app/Policies/ServicePolicy.php b/app/Policies/ServicePolicy.php index 51a6d8116..b252d3600 100644 --- a/app/Policies/ServicePolicy.php +++ b/app/Policies/ServicePolicy.php @@ -28,7 +28,7 @@ class ServicePolicy */ public function create(User $user): bool { - return true; + return $user->isAdmin() && $user->teams()->get()->firstWhere('id', $service->team()->first()->id) !== null; } /** @@ -36,7 +36,7 @@ class ServicePolicy */ public function update(User $user, Service $service): bool { - return true; + return $user->isAdmin() && $user->teams()->get()->firstWhere('id', $service->team()->first()->id) !== null; } /** @@ -73,10 +73,22 @@ class ServicePolicy public function stop(User $user, Service $service): bool { - if ($user->isAdmin()) { - return true; - } + return $user->teams()->get()->firstWhere('id', $service->team()->first()->id) !== null; + } - return false; + /** + * Determine whether the user can manage environment variables. + */ + public function manageEnvironment(User $user, Service $service): bool + { + return $user->isAdmin() && $user->teams()->get()->firstWhere('id', $service->team()->first()->id) !== null; + } + + /** + * Determine whether the user can deploy the service. + */ + public function deploy(User $user, Service $service): bool + { + return $user->teams()->get()->firstWhere('id', $service->team()->first()->id) !== null; } } diff --git a/app/Providers/AuthServiceProvider.php b/app/Providers/AuthServiceProvider.php index a2c02d20a..3aefca9f2 100644 --- a/app/Providers/AuthServiceProvider.php +++ b/app/Providers/AuthServiceProvider.php @@ -20,6 +20,15 @@ class AuthServiceProvider extends ServiceProvider \App\Models\Application::class => \App\Policies\ApplicationPolicy::class, \App\Models\ApplicationPreview::class => \App\Policies\ApplicationPreviewPolicy::class, \App\Models\ApplicationSetting::class => \App\Policies\ApplicationSettingPolicy::class, + // Database policies - all use the shared DatabasePolicy + \App\Models\StandalonePostgresql::class => \App\Policies\DatabasePolicy::class, + \App\Models\StandaloneMysql::class => \App\Policies\DatabasePolicy::class, + \App\Models\StandaloneMariadb::class => \App\Policies\DatabasePolicy::class, + \App\Models\StandaloneMongodb::class => \App\Policies\DatabasePolicy::class, + \App\Models\StandaloneRedis::class => \App\Policies\DatabasePolicy::class, + \App\Models\StandaloneKeydb::class => \App\Policies\DatabasePolicy::class, + \App\Models\StandaloneDragonfly::class => \App\Policies\DatabasePolicy::class, + \App\Models\StandaloneClickhouse::class => \App\Policies\DatabasePolicy::class, ]; /** diff --git a/resources/views/livewire/project/application/general.blade.php b/resources/views/livewire/project/application/general.blade.php index 03f26fd04..3fa370dd6 100644 --- a/resources/views/livewire/project/application/general.blade.php +++ b/resources/views/livewire/project/application/general.blade.php @@ -2,9 +2,11 @@