diff --git a/controllers/UsersApiController.php b/controllers/UsersApiController.php index c3837261..e28ac4f1 100644 --- a/controllers/UsersApiController.php +++ b/controllers/UsersApiController.php @@ -123,7 +123,7 @@ class UsersApiController extends BaseApiController User::checkPermission($request, User::PERMISSION_USERS_READ); try { - return $this->ApiResponse($response, $this->getUsersService()->GetUsersAsDto()); + return $this->FilteredApiResponse($response, $this->getUsersService()->GetUsersAsDto(), $request->getQueryParams()); } catch (\Exception $ex) { diff --git a/migrations/0114.sql b/migrations/0114.sql new file mode 100644 index 00000000..6afd7fd4 --- /dev/null +++ b/migrations/0114.sql @@ -0,0 +1,15 @@ +CREATE VIEW users_dto +AS +SELECT id, + username, + first_name, + last_name, + row_created_timestamp, + (CASE + WHEN first_name = '' AND last_name != '' THEN last_name + WHEN last_name = '' AND first_name != '' THEN first_name + WHEN last_name != '' AND first_name != '' THEN first_name + ' ' + last_name + ELSE username + END + ) AS display_name +FROM users; diff --git a/services/UsersService.php b/services/UsersService.php index 407088d5..9da8bb89 100644 --- a/services/UsersService.php +++ b/services/UsersService.php @@ -81,19 +81,9 @@ class UsersService extends BaseService return array_merge($GROCY_DEFAULT_USER_SETTINGS, $settings); } - public function GetUsersAsDto() + public function GetUsersAsDto(): \LessQL\Result { - $users = $this->getDatabase()->users(); - $returnUsers = []; - - foreach ($users as $user) - { - unset($user->password); - $user->display_name = GetUserDisplayName($user); - $returnUsers[] = $user; - } - - return $returnUsers; + return $this->getDatabase()->users_dto(); } public function SetUserSetting($userId, $settingKey, $settingValue)