From 49bbd7617adb693309d81f3e98d08e507a65f348 Mon Sep 17 00:00:00 2001 From: edalzell Date: Wed, 10 Jul 2024 10:28:49 -0700 Subject: [PATCH] make it conditional --- src/ServiceProvider.php | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/ServiceProvider.php b/src/ServiceProvider.php index c71502f5..8d80b370 100644 --- a/src/ServiceProvider.php +++ b/src/ServiceProvider.php @@ -12,6 +12,7 @@ use Illuminate\Support\Traits\Conditionable; use Spatie\ErrorSolutions\Contracts\SolutionProviderRepository; use Statamic\API\Middleware\Cache; +use Statamic\Auth\Permission as AuthPermission; use Statamic\Facades\Blueprint; use Statamic\Facades\CP\Nav; use Statamic\Facades\GraphQL; @@ -143,18 +144,12 @@ protected function registerPermissions(): self $permission ->label($this->permissionLabel('view', $resource)) ->children([ - Permission::make("edit {$resource->handle()}") - ->label($this->permissionLabel('edit', $resource)) - ->children([ - Permission::make("create {$resource->handle()}") - ->label($this->permissionLabel('create', $resource)), - - Permission::make("publish {$resource->handle()}") - ->label("Manage {$resource->handle()} Publish State"), - - Permission::make("delete {$resource->handle()}") - ->label($this->permissionLabel('delete', $resource)), - ]), + $this->makePermission("edit {$resource->handle()}", $this->permissionLabel('edit', $resource)) + ->children(array_filter([ + $this->makePermission("create {$resource->handle()}", $this->permissionLabel('create', $resource)), + $resource->hasPublishStates() ? $this->makePermission("publish {$resource->handle()}", "Manage {$resource->name()} Publish State") : null, + $this->makePermission("delete {$resource->handle()}", $this->permissionLabel('delete', $resource)), + ])), ]); }); } @@ -303,4 +298,9 @@ protected function shouldDiscoverResources(): bool return true; } + + private function makePermission(string $permission, string $label): AuthPermission + { + return Permission::make($permission)->label($label); + } }