Enforce command-specific permissions for self-serve lane operations and update related tests

This commit is contained in:
Jeppe Bundgaard
2025-12-15 16:00:00 +01:00
parent 46c7a2f2cd
commit b6371455ca
2 changed files with 19 additions and 2 deletions
@@ -67,6 +67,18 @@ class moduleSelfServeRoute
if ($command === null) { if ($command === null) {
$response->error("Invalid command: " . $commandParam); $response->error("Invalid command: " . $commandParam);
} }
// Require permissions for specific commands
switch ($command) {
case \modules\selfserve\helpers\selfserve_lane_command::START:
self::requirePermission('modules_selfserve_lane_command_execute_start');
break;
case \modules\selfserve\helpers\selfserve_lane_command::STOP:
self::requirePermission('modules_selfserve_lane_command_execute_stop');
break;
case \modules\selfserve\helpers\selfserve_lane_command::RESET:
self::requirePermission('modules_selfserve_lane_command_execute_reset');
break;
}
// Execute the command // Execute the command
try { try {
$args = new \modules\selfserve\classes\selfserve_lane_command_arguments(); $args = new \modules\selfserve\classes\selfserve_lane_command_arguments();
@@ -87,7 +99,10 @@ class moduleSelfServeRoute
} }
}, },
[ [
'modules_selfserve_lane_command_execute' => 'Execute self-serve lane command', 'modules_selfserve_lane_command_execute' => 'Execute self-serve lane command. This is required together with specific command permissions below.',
'modules_selfserve_lane_command_execute_start' => 'Execute self-serve lane START command',
'modules_selfserve_lane_command_execute_stop' => 'Execute self-serve lane STOP command',
'modules_selfserve_lane_command_execute_reset' => 'Execute self-serve lane RESET command',
] ]
); );
} }
@@ -1,5 +1,5 @@
### POST /modules/self-serve/lane/command START ### POST /modules/self-serve/lane/command START
@lane_id = 3 @lane_id = 1
POST {{api_url}}/modules/self-serve/lane/command POST {{api_url}}/modules/self-serve/lane/command
Accept: application/json Accept: application/json
Content-Type: application/json Content-Type: application/json
@@ -16,6 +16,7 @@ Content-Type: application/json
POST {{api_url}}/modules/self-serve/lane/command POST {{api_url}}/modules/self-serve/lane/command
Accept: application/json Accept: application/json
Content-Type: application/json Content-Type: application/json
Authorization: Bearer {{auth_token_superuser}}
{ {
"command": "STOP", "command": "STOP",
@@ -26,6 +27,7 @@ Content-Type: application/json
POST {{api_url}}/modules/self-serve/lane/command POST {{api_url}}/modules/self-serve/lane/command
Accept: application/json Accept: application/json
Content-Type: application/json Content-Type: application/json
Authorization: Bearer {{auth_token_superuser}}
{ {
"command": "RESET", "command": "RESET",