From c14c11b98071de7a8778316e66f9f020212ed589 Mon Sep 17 00:00:00 2001 From: Jasper van Gestel Date: Wed, 24 Jun 2026 06:40:56 +0200 Subject: [PATCH 1/3] completer api permission names. Needs refactor/re-apply of api rights --- src/RestModelConfigProviderAbstract.php | 31 ++++++++++++++++++------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/src/RestModelConfigProviderAbstract.php b/src/RestModelConfigProviderAbstract.php index a852255..d222996 100644 --- a/src/RestModelConfigProviderAbstract.php +++ b/src/RestModelConfigProviderAbstract.php @@ -97,6 +97,8 @@ protected function createRoute( $handler = $middleware; } + $path = $this->pathPrefix . '/' . ltrim($path ?? '', '/'); + $route = [ 'name' => $name, 'path' => $path, @@ -150,8 +152,15 @@ protected function createModelRoute( if ($handler === null) { $handler = $this->defaultHandler; } + + $trimmedEndpoint = trim($endpoint, '/'); + $endpointPrefix = trim($this->pathPrefix, '/'); + $fullEndpoint = $endpointPrefix . '/' . $trimmedEndpoint; + $trimmedFullEndpoint = strtolower(trim($fullEndpoint, '/')); + $cleanEndpointName = strtolower(str_replace(['/'], '.', trim($trimmedFullEndpoint, '/'))); + if ($privilege === null) { - $privilege = "pr.api.$endpoint"; + $privilege = "pr.$cleanEndpointName"; } $routeParameters = '/[{' . $idField . ':' . $idRegex . '}]'; @@ -177,14 +186,20 @@ protected function createModelRoute( $settings = array_merge($settings, $options); } + $privilegeLabel = $trimmedFullEndpoint; + if (str_starts_with($privilegeLabel, 'api/')) { + $privilegeLabel = substr($privilegeLabel, 4); + } + $routes = []; if (!empty($methods)) { - $name = "api.$endpoint.structure"; + $name = "$cleanEndpointName.structure"; $settings['privilege'] = $privilege . '.structure'; + $settings['privilegeLabel'] = "API: $privilegeLabel -> /structure"; $routes[$name] = [ 'name' => $name, - 'path' => '/' . $endpoint . '/structure', + 'path' => '/' . $trimmedFullEndpoint . '/structure', 'middleware' => $handler, 'options' => $settings, 'allowed_methods' => ['GET'] @@ -193,15 +208,15 @@ protected function createModelRoute( foreach($methods as $method) { $path = match ($method) { - 'GET' => '/' . $endpoint . '['.$routeParameters.']', - 'POST' => '/' . $endpoint, - 'PATCH', 'PUT', 'DELETE' => '/' . $endpoint . $routeParameters, + 'GET' => '/' . $trimmedEndpoint . '['.$routeParameters.']', + 'POST' => '/' . $trimmedEndpoint, + 'PATCH', 'PUT', 'DELETE' => '/' . $trimmedEndpoint . $routeParameters, default => null, }; - $name = "api.$endpoint.$method"; + $name = "$cleanEndpointName.$method"; $settings['privilege'] = "$privilege.$method"; - $settings['privilegeLabel'] = "API: $endpoint -> $method"; + $settings['privilegeLabel'] = "API: $privilegeLabel -> $method"; [$methodRoute] = $this->createRoute( name: $name, From 35f28c259a0b0ee07566d04a5501306f0d5f8969 Mon Sep 17 00:00:00 2001 From: Jasper van Gestel Date: Wed, 24 Jun 2026 06:47:11 +0200 Subject: [PATCH 2/3] remove path from routegroup --- src/RestModelConfigProviderAbstract.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/RestModelConfigProviderAbstract.php b/src/RestModelConfigProviderAbstract.php index d222996..0923d8f 100644 --- a/src/RestModelConfigProviderAbstract.php +++ b/src/RestModelConfigProviderAbstract.php @@ -34,7 +34,6 @@ public function __invoke() { return [ 'routes' => $this->routeGroup([ - 'path' => $this->pathPrefix, 'middleware' => $this->getMiddleware(), ], $this->getRoutes() @@ -97,7 +96,7 @@ protected function createRoute( $handler = $middleware; } - $path = $this->pathPrefix . '/' . ltrim($path ?? '', '/'); + $path = $this->pathPrefix . '/' . ltrim($path, '/'); $route = [ 'name' => $name, From a40a8a5e4e2850cb3d9a220aec3e4a6bfd82c29c Mon Sep 17 00:00:00 2001 From: Jasper van Gestel Date: Mon, 3 Aug 2026 14:34:27 +0200 Subject: [PATCH 3/3] fix privilege from model --- src/RestModelConfigProviderAbstract.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/RestModelConfigProviderAbstract.php b/src/RestModelConfigProviderAbstract.php index 0923d8f..676cacb 100644 --- a/src/RestModelConfigProviderAbstract.php +++ b/src/RestModelConfigProviderAbstract.php @@ -223,6 +223,7 @@ protected function createModelRoute( handler: $handler, allowedMethods: [$method], options: $settings, + privilege: $settings['privilege'], ); $routes[$name] = $methodRoute; }