From f89e7af34e3f5603411266246741584e93165a23 Mon Sep 17 00:00:00 2001 From: Saeed Vaziry Date: Sun, 16 Mar 2025 14:38:10 +0100 Subject: [PATCH] fix server workers 500 error --- app/Policies/WorkerPolicy.php | 16 ++++++++-------- app/Web/Pages/Servers/Workers/Actions/Create.php | 2 +- .../Servers/Workers/Widgets/WorkersList.php | 4 +++- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/app/Policies/WorkerPolicy.php b/app/Policies/WorkerPolicy.php index 32e15c1..54fe4cc 100644 --- a/app/Policies/WorkerPolicy.php +++ b/app/Policies/WorkerPolicy.php @@ -18,7 +18,7 @@ public function viewAny(User $user, Server $server, ?Site $site = null): bool return ($user->isAdmin() || $server->project->users->contains($user)) && $server->isReady() && ( - ! $site instanceof \App\Models\Site || + ! $site instanceof Site || ( $site->hasFeature(SiteFeature::WORKERS) && $site->isReady() @@ -29,11 +29,11 @@ public function viewAny(User $user, Server $server, ?Site $site = null): bool public function view(User $user, Worker $worker, Server $server, ?Site $site = null): bool { return ($user->isAdmin() || $server->project->users->contains($user)) && - $site->server_id === $server->id && $server->isReady() && ( - ! $site instanceof \App\Models\Site || + ! $site instanceof Site || ( + $site->server_id === $server->id && $site->hasFeature(SiteFeature::WORKERS) && $site->isReady() && $worker->site_id === $site->id @@ -46,7 +46,7 @@ public function create(User $user, Server $server, ?Site $site = null): bool return ($user->isAdmin() || $server->project->users->contains($user)) && $server->isReady() && ( - ! $site instanceof \App\Models\Site || + ! $site instanceof Site || ( $site->hasFeature(SiteFeature::WORKERS) && $site->isReady() @@ -57,11 +57,11 @@ public function create(User $user, Server $server, ?Site $site = null): bool public function update(User $user, Worker $worker, Server $server, ?Site $site = null): bool { return ($user->isAdmin() || $server->project->users->contains($user)) && - $site->server_id === $server->id && $server->isReady() && ( - ! $site instanceof \App\Models\Site || + ! $site instanceof Site || ( + $site->server_id === $server->id && $site->hasFeature(SiteFeature::WORKERS) && $site->isReady() && $worker->site_id === $site->id @@ -72,11 +72,11 @@ public function update(User $user, Worker $worker, Server $server, ?Site $site = public function delete(User $user, Worker $worker, Server $server, ?Site $site = null): bool { return ($user->isAdmin() || $server->project->users->contains($user)) && - $site->server_id === $server->id && $server->isReady() && ( - ! $site instanceof \App\Models\Site || + ! $site instanceof Site || ( + $site->server_id === $server->id && $site->hasFeature(SiteFeature::WORKERS) && $site->isReady() && $worker->site_id === $site->id diff --git a/app/Web/Pages/Servers/Workers/Actions/Create.php b/app/Web/Pages/Servers/Workers/Actions/Create.php index 78efdbd..c328825 100644 --- a/app/Web/Pages/Servers/Workers/Actions/Create.php +++ b/app/Web/Pages/Servers/Workers/Actions/Create.php @@ -24,7 +24,7 @@ public static function form(Server $server, ?Site $site = null): array ->helperText('Example: php /home/vito/your-site/artisan queue:work'), Select::make('user') ->rules(fn (callable $get) => CreateWorker::rules($server, $site)['user']) - ->options($server->getSshUsers()), + ->options(array_combine($server->getSshUsers(), $server->getSshUsers())), TextInput::make('numprocs') ->default(1) ->rules(CreateWorker::rules($server, $site)['numprocs']) diff --git a/app/Web/Pages/Servers/Workers/Widgets/WorkersList.php b/app/Web/Pages/Servers/Workers/Widgets/WorkersList.php index 3ed89d3..a74287a 100644 --- a/app/Web/Pages/Servers/Workers/Widgets/WorkersList.php +++ b/app/Web/Pages/Servers/Workers/Widgets/WorkersList.php @@ -44,8 +44,10 @@ protected function getTableQuery(): Builder return Worker::query() ->where('server_id', $this->server->id) ->where(function (Builder $query): void { - if ($this->site instanceof \App\Models\Site) { + if ($this->site instanceof Site) { $query->where('site_id', $this->site->id); + } else { + $query->whereNull('site_id'); } }); }