From eb420fd459e8f0df40b709f5719b3ad47ace4a64 Mon Sep 17 00:00:00 2001 From: Damien <damien.burel@maarch.org> Date: Thu, 27 Jun 2019 11:03:18 +0200 Subject: [PATCH] FEAT Administrative privileges in token --- .../group/controllers/PrivilegeController.php | 42 ++++++++++--------- src/app/user/controllers/UserController.php | 7 ++-- 2 files changed, 26 insertions(+), 23 deletions(-) diff --git a/src/app/group/controllers/PrivilegeController.php b/src/app/group/controllers/PrivilegeController.php index 1ad6664e28..1c34b1af97 100755 --- a/src/app/group/controllers/PrivilegeController.php +++ b/src/app/group/controllers/PrivilegeController.php @@ -30,6 +30,7 @@ class PrivilegeController ['id' => 'manage_documents', 'type' => 'simple'] ]; + //TODO remove after token public function getAdministrativePrivilegesByUser(Request $request, Response $response) { $groups = UserGroupModel::get(['select' => ['group_id'], 'where' => ['user_id = ?'], 'data' => [$GLOBALS['id']]]); @@ -53,25 +54,7 @@ class PrivilegeController return $response->withJson(['privileges' => $administrativePrivileges]); } - public static function hasPrivilege(array $args) - { - ValidatorModel::notEmpty($args, ['userId', 'privilege']); - ValidatorModel::intVal($args, ['userId']); - ValidatorModel::stringType($args, ['privilege']); - - $groups = UserGroupModel::get(['select' => ['group_id'], 'where' => ['user_id = ?'], 'data' => [$args['userId']]]); - - foreach ($groups as $group) { - $privilege = GroupPrivilegeModel::getPrivileges(['select' => [1], 'where' => ['group_id = ?', 'privilege = ?'], 'data' => [$group['group_id'], $args['privilege']]]); - if (!empty($privilege)) { - return true; - } - } - - return false; - } - - public static function hasAdmin(array $args) + public static function getAdministrativePrivilegesByUserId(array $args) { ValidatorModel::notEmpty($args, ['userId']); ValidatorModel::intVal($args, ['userId']); @@ -80,6 +63,7 @@ class PrivilegeController $allGroups = array_column($groups, 'group_id'); + $administrativePrivileges = []; if (!empty($allGroups)) { $privileges = GroupPrivilegeModel::getPrivileges(['select' => ['privilege'], 'where' => ['group_id in (?)'], 'data' => [$allGroups]]); $privileges = array_column($privileges, 'privilege'); @@ -87,12 +71,30 @@ class PrivilegeController if (!empty($privileges)) { foreach (PrivilegeController::PRIVILEGES as $value) { if ($value['type'] == 'admin' && in_array($value['id'], $privileges)) { - return true; + $administrativePrivileges[] = $value; } } } } + return $administrativePrivileges; + } + + public static function hasPrivilege(array $args) + { + ValidatorModel::notEmpty($args, ['userId', 'privilege']); + ValidatorModel::intVal($args, ['userId']); + ValidatorModel::stringType($args, ['privilege']); + + $groups = UserGroupModel::get(['select' => ['group_id'], 'where' => ['user_id = ?'], 'data' => [$args['userId']]]); + + foreach ($groups as $group) { + $privilege = GroupPrivilegeModel::getPrivileges(['select' => [1], 'where' => ['group_id = ?', 'privilege = ?'], 'data' => [$group['group_id'], $args['privilege']]]); + if (!empty($privilege)) { + return true; + } + } + return false; } } diff --git a/src/app/user/controllers/UserController.php b/src/app/user/controllers/UserController.php index 869bd3f145..90c9b834ad 100755 --- a/src/app/user/controllers/UserController.php +++ b/src/app/user/controllers/UserController.php @@ -531,9 +531,10 @@ class UserController } if ($GLOBALS['id'] == $args['id']) { - $user['preferences'] = json_decode($user['preferences'], true); - $user['availableLanguages'] = LanguageController::getAvailableLanguages(); - $user['hasAdmin'] = PrivilegeController::hasAdmin(['userId' => $args['id']]); + $user['preferences'] = json_decode($user['preferences'], true); + $user['availableLanguages'] = LanguageController::getAvailableLanguages(); + $user['administrativePrivileges'] = PrivilegeController::getAdministrativePrivilegesByUserId(['userId' => $args['id']]); + $user['hasAdmin'] = !empty($user['administrativePrivileges']); } return $user; -- GitLab