From a840b008fd615bfb4c4c2e4340b522d917c8fb62 Mon Sep 17 00:00:00 2001 From: Damien <damien.burel@maarch.org> Date: Wed, 25 Apr 2018 17:07:54 +0200 Subject: [PATCH] FEAT #7387 #7388 Autocomplete for users administrable --- rest/index.php | 1 + src/app/group/controllers/GroupController.php | 7 ++-- .../controllers/AutoCompleteController.php | 34 +++++++++++++++++++ 3 files changed, 39 insertions(+), 3 deletions(-) diff --git a/rest/index.php b/rest/index.php index 89f3fe8ea71..5ba5f779848 100755 --- a/rest/index.php +++ b/rest/index.php @@ -123,6 +123,7 @@ $app->get('/administration', \SrcCore\controllers\CoreController::class . ':getA //AutoComplete $app->get('/autocomplete/users', \SrcCore\controllers\AutoCompleteController::class . ':getUsers'); +$app->get('/autocomplete/users/administration', \SrcCore\controllers\AutoCompleteController::class . ':getUsersForAdministration'); $app->get('/autocomplete/users/visa', \SrcCore\controllers\AutoCompleteController::class . ':getUsersForVisa'); $app->get('/autocomplete/entities', \SrcCore\controllers\AutoCompleteController::class . ':getEntities'); $app->get('/autocomplete/statuses', \SrcCore\controllers\AutoCompleteController::class . ':getStatuses'); diff --git a/src/app/group/controllers/GroupController.php b/src/app/group/controllers/GroupController.php index 9536e74d5b2..cab518460ed 100644 --- a/src/app/group/controllers/GroupController.php +++ b/src/app/group/controllers/GroupController.php @@ -134,9 +134,10 @@ class GroupController return $response->withStatus(400)->withJson(['errors' => 'Group not found']); } - $group['users'] = GroupModel::getUsersByGroupId(['groupId' => $group['group_id'], 'select' => ['users.id', 'users.user_id', 'users.firstname', 'users.lastname']]); - $group['security'] = GroupModel::getSecurityByGroupId(['groupId' => $group['group_id']]); - $group['services'] = GroupModel::getAllServicesByGroupId(['groupId' => $group['group_id']]); + $group['users'] = GroupModel::getUsersByGroupId(['groupId' => $group['group_id'], 'select' => ['users.id', 'users.user_id', 'users.firstname', 'users.lastname']]); + $group['security'] = GroupModel::getSecurityByGroupId(['groupId' => $group['group_id']]); + $group['services'] = GroupModel::getAllServicesByGroupId(['groupId' => $group['group_id']]); + $group['canAdminUsers'] = ServiceModel::hasService(['id' => 'admin_users', 'userId' => $GLOBALS['userId'], 'location' => 'apps', 'type' => 'admin']); return $response->withJson(['group' => $group]); } diff --git a/src/core/controllers/AutoCompleteController.php b/src/core/controllers/AutoCompleteController.php index cb90cf34624..c97207b46f2 100644 --- a/src/core/controllers/AutoCompleteController.php +++ b/src/core/controllers/AutoCompleteController.php @@ -22,6 +22,7 @@ use Entity\models\EntityModel; use SrcCore\models\CoreConfigModel; use SrcCore\models\TextFormatModel; use Status\models\StatusModel; +use User\models\UserEntityModel; use User\models\UserModel; class AutoCompleteController @@ -51,6 +52,39 @@ class AutoCompleteController return $response->withJson($data); } + public static function getUsersForAdministration(Request $request, Response $response) + { + if ($GLOBALS['userId'] != 'superadmin') { + $entities = EntityModel::getAllEntitiesByUserId(['userId' => $GLOBALS['userId']]); + $users = UserEntityModel::getUsersByEntities([ + 'select' => ['DISTINCT users.user_id', 'users.firstname', 'users.lastname'], + 'entities' => $entities + ]); + $usersNoEntities = UserEntityModel::getUsersWithoutEntities(['select' => ['users.user_id', 'users.firstname', 'users.lastname']]); + $users = array_merge($users, $usersNoEntities); + } else { + $excludedUsers = ['superadmin']; + + $users = UserModel::get([ + 'select' => ['user_id', 'firstname', 'lastname'], + 'where' => ['enabled = ?', 'status != ?', 'user_id not in (?)'], + 'data' => ['Y', 'DEL', $excludedUsers], + 'orderBy' => ['lastname'] + ]); + } + + $data = []; + foreach ($users as $key => $value) { + $data[] = [ + 'type' => 'user', + 'id' => $value['user_id'], + 'idToDisplay' => "{$value['firstname']} {$value['lastname']}" + ]; + } + + return $response->withJson($data); + } + public static function getUsersForVisa(Request $request, Response $response) { $excludedUsers = ['superadmin']; -- GitLab