From 5981003bb1eada8f58a6951c1617c12bde4db18a Mon Sep 17 00:00:00 2001 From: Guillaume Heurtier <guillaume.heurtier@maarch.org> Date: Wed, 20 Nov 2019 14:22:48 +0100 Subject: [PATCH] FIX #12161 TIME 0:30 added route to get privilege parameters --- rest/index.php | 1 + .../group/controllers/PrivilegeController.php | 26 +++++++++++++++++-- .../group/models/PrivilegeModelAbstract.php | 2 +- 3 files changed, 26 insertions(+), 3 deletions(-) diff --git a/rest/index.php b/rest/index.php index 3ca2a66eca0..e5004cb230e 100755 --- a/rest/index.php +++ b/rest/index.php @@ -220,6 +220,7 @@ $app->put('/groups/{id}/reassign/{newGroupId}', \Group\controllers\GroupControll $app->post('/groups/{id}/privileges/{privilegeId}', \Group\controllers\PrivilegeController::class . ':addPrivilege'); $app->delete('/groups/{id}/privileges/{privilegeId}', \Group\controllers\PrivilegeController::class . ':removePrivilege'); $app->put('/groups/{id}/privileges/{privilegeId}/parameters', \Group\controllers\PrivilegeController::class . ':updateParameters'); +$app->get('/groups/{id}/privileges/{privilegeId}/parameters', \Group\controllers\PrivilegeController::class . ':getParameters'); //Histories $app->get('/histories', \History\controllers\HistoryController::class . ':get'); diff --git a/src/app/group/controllers/PrivilegeController.php b/src/app/group/controllers/PrivilegeController.php index ad202855125..db0a93abd9b 100644 --- a/src/app/group/controllers/PrivilegeController.php +++ b/src/app/group/controllers/PrivilegeController.php @@ -110,6 +110,28 @@ class PrivilegeController return $response->withStatus(204); } + public static function getParameters(Request $request, Response $response, array $args) + { + $group = GroupModel::getById(['id' => $args['id']]); + if (empty($group)) { + return $response->withStatus(400)->withJson(['errors' => 'Group not found']); + } + + $queryParams = $request->getQueryParams(); + + $parameters = PrivilegeModel::getParametersFromGroupPrivilege(['groupId' => $group['group_id'], 'privilegeId' => $args['privilegeId']]); + + if (!empty($queryParams['parameter'])) { + if (!isset($parameters[$queryParams['parameter']])) { + return $response->withStatus(400)->withJson(['errors' => 'Parameter not found']); + } + + $parameters = $parameters[$queryParams['parameter']]; + } + + return $response->withJson($parameters); + } + public static function hasPrivilege(array $args) { ValidatorModel::notEmpty($args, ['privilegeId', 'userId']); @@ -169,8 +191,8 @@ class PrivilegeController $assignable = []; foreach ($userGroups as $userGroup) { $groups = PrivilegeModel::getParametersFromGroupPrivilege(['groupId' => $userGroup, 'privilegeId' => 'admin_users']); - if (isset($groups) && isset($groups->groups)) { - $groups = $groups->groups; + if (isset($groups) && isset($groups['groups'])) { + $groups = $groups['groups']; $assignable = array_merge($assignable, $groups); } } diff --git a/src/app/group/models/PrivilegeModelAbstract.php b/src/app/group/models/PrivilegeModelAbstract.php index 8278fe99080..88eb486943e 100644 --- a/src/app/group/models/PrivilegeModelAbstract.php +++ b/src/app/group/models/PrivilegeModelAbstract.php @@ -126,7 +126,7 @@ abstract class PrivilegeModelAbstract return null; } - $extra = json_decode($extra[0]); + $extra = json_decode($extra[0], true); return $extra; } -- GitLab