From 7c8a04ff7a7e103c35ffb0838f3351b861081de4 Mon Sep 17 00:00:00 2001 From: Jeppe Bundgaard Date: Wed, 21 Jan 2026 10:22:25 +0100 Subject: [PATCH] Add routes to view and update the self-serve enabled status for departments --- .../nginx/app/routes/departmentsRoute.php | 76 +++++++++++++++++++ .../HTTP/department-selfserve-enabled.http | 14 ++++ 2 files changed, 90 insertions(+) create mode 100644 services/nginx/app/tests/HTTP/department-selfserve-enabled.http diff --git a/services/nginx/app/routes/departmentsRoute.php b/services/nginx/app/routes/departmentsRoute.php index 909b4d10..724e8de1 100644 --- a/services/nginx/app/routes/departmentsRoute.php +++ b/services/nginx/app/routes/departmentsRoute.php @@ -5,6 +5,7 @@ namespace routes; use classes\authentication; use objects\categories_o; use objects\department_categories_o; +use objects\department_variables_o; use objects\departments_o; use objects\logs_o; use objects\orders_o; @@ -221,6 +222,81 @@ class departmentsRoute ] ); + $this->get('/departments/self-serve/enabled', function () { + // Require the user to be logged in + global $response; + self::requirePermission('view_department_selfserve_enabled'); + // Get the user object + $user = (new authentication())->get_user(); + // Check if the request was successful + if ($user) { + // Require the department id + self::requireParameters(['id']); + self::requireType((int)self::getParameter('id'), self::type_int()); + // Get the department object + $department = (new departments_o())->select(self::getParameter('id')); + // Validate the department object + if (!$department->exists()) { + // Return an error + $response->error('Department not found', 404); + } + // Get the department variable + $department_variables = (new department_variables_o())->selectDepartment($department->id); + $enabled = $department_variables->getVariable('selfserve_enabled'); + + // Return the status + $response->success([ + 'enabled' => $enabled === true + ]); + } else { + // Return an error + $response->error('Invalid session', 400); + } + }, + [ + 'view_department_selfserve_enabled' => 'View if department self-serve is enabled' + ] + ); + + $this->put('/departments/self-serve/enabled', function () { + // Require the user to be logged in + global $response; + self::requirePermission('edit_department_selfserve_enabled'); + // Get the user object + $user = (new authentication())->get_user(); + // Check if the request was successful + if ($user) { + // Require the department id and enabled status + self::requireParameters(['id', 'enabled']); + self::requireType((int)self::getParameter('id'), self::type_int()); + + // Get the department object + $department = (new departments_o())->select(self::getParameter('id')); + // Validate the department object + if (!$department->exists()) { + // Return an error + $response->error('Department not found', 404); + } + // Set the department variable + $department_variables = (new department_variables_o())->selectDepartment($department->id); + $enabled = self::getParameter('enabled') === 'true' || self::getParameter('enabled') === true || self::getParameter('enabled') === 1 || self::getParameter('enabled') === '1'; + $department_variables->set('selfserve_enabled', $enabled ? 'true' : 'false'); + + // Log the incident + (new logs_o())->add('departments', $department->id, 1, $user->id, 'EDIT_DEPARTMENT_SELFSERVE_ENABLED', 'Successfully edited department self-serve enabled status to ' . ($enabled ? 'true' : 'false')); + + // Return a success message + $response->success(['message' => 'Department self-serve enabled status updated successfully']); + } else { + // Return an error + $response->error('Invalid session', 400); + } + }, + [ + 'edit_department_selfserve_enabled' => 'Edit if department self-serve is enabled' + ] + ); + $this->post('/departments/categories', function () { // Require the user to be logged in global $response; diff --git a/services/nginx/app/tests/HTTP/department-selfserve-enabled.http b/services/nginx/app/tests/HTTP/department-selfserve-enabled.http new file mode 100644 index 00000000..96ee60ba --- /dev/null +++ b/services/nginx/app/tests/HTTP/department-selfserve-enabled.http @@ -0,0 +1,14 @@ +### GET /departments/self-serve/enabled +GET {{api_url}}/departments/self-serve/enabled?id=1 +Accept: application/json +Authorization: Bearer {{auth_token_superuser}} + +### PUT /departments/self-serve/enabled +PUT {{api_url}}/departments/self-serve/enabled?id=1&enabled=true +Accept: application/json +Authorization: Bearer {{auth_token_superuser}} + +### PUT /departments/self-serve/enabled (disable) +PUT {{api_url}}/departments/self-serve/enabled?id=1&enabled=false +Accept: application/json +Authorization: Bearer {{auth_token_superuser}}