diff --git a/rest/index.php b/rest/index.php index 3ca2a66eca0386ea02675aa15046646a04eea06c..e5004cb230e1aff027dcf40b11b90eba0ef0a1d2 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 ad2028551258d41b45e4ed7a438b82f041751999..db0a93abd9b8728a4e06d336aae2b7610cb3f3e8 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 8278fe990805b12571eceeb714a18f906543b5f3..88eb486943e3346c016cb361be95c2f2ad6b34a3 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; }