From 3c46dda5bc9920d124aa8b6b09570f9dd5712c34 Mon Sep 17 00:00:00 2001 From: Michael Jumper Date: Tue, 1 Sep 2015 01:18:59 -0700 Subject: [PATCH] GUAC-586: List readable users if applicable to management. --- .../net/basic/rest/user/UserRESTService.java | 2 +- .../settings/directives/guacSettingsUsers.js | 50 +++++++++++-------- 2 files changed, 30 insertions(+), 22 deletions(-) diff --git a/guacamole/src/main/java/org/glyptodon/guacamole/net/basic/rest/user/UserRESTService.java b/guacamole/src/main/java/org/glyptodon/guacamole/net/basic/rest/user/UserRESTService.java index 29f6b3f1c..687d4ff85 100644 --- a/guacamole/src/main/java/org/glyptodon/guacamole/net/basic/rest/user/UserRESTService.java +++ b/guacamole/src/main/java/org/glyptodon/guacamole/net/basic/rest/user/UserRESTService.java @@ -169,7 +169,7 @@ public class UserRESTService { // Filter users, if requested Collection userIdentifiers = userDirectory.getIdentifiers(); - if (!isAdmin && permissions != null) { + if (!isAdmin && permissions != null && !permissions.isEmpty()) { ObjectPermissionSet userPermissions = self.getUserPermissions(); userIdentifiers = userPermissions.getAccessibleObjects(permissions, userIdentifiers); } diff --git a/guacamole/src/main/webapp/app/settings/directives/guacSettingsUsers.js b/guacamole/src/main/webapp/app/settings/directives/guacSettingsUsers.js index e6f6dd709..af52ee3bf 100644 --- a/guacamole/src/main/webapp/app/settings/directives/guacSettingsUsers.js +++ b/guacamole/src/main/webapp/app/settings/directives/guacSettingsUsers.js @@ -204,34 +204,42 @@ angular.module('settings').directive('guacSettingsUsers', [function guacSettings if (!canManageUsers()) $location.path('/'); - }); + var userPromise; - // Retrieve all users for whom we have UPDATE or DELETE permission - dataSourceService.apply(userService.getUsers, dataSources, [ - PermissionSet.ObjectPermissionType.UPDATE, - PermissionSet.ObjectPermissionType.DELETE - ]) - .then(function usersReceived(userArrays) { + // If users can be created, list all readable users + if ($scope.canCreateUsers()) + userPromise = dataSourceService.apply(userService.getUsers, dataSources); - var addedUsers = {}; - $scope.manageableUsers = []; + // Otherwise, list only updateable/deletable users + else + userPromise = dataSourceService.apply(userService.getUsers, dataSources, [ + PermissionSet.ObjectPermissionType.UPDATE, + PermissionSet.ObjectPermissionType.DELETE + ]); - // For each user in each data source - angular.forEach(dataSources, function addUserList(dataSource) { - angular.forEach(userArrays[dataSource], function addUser(user) { + userPromise.then(function usersReceived(userArrays) { - // Do not add the same user twice - if (addedUsers[user.username]) - return; + var addedUsers = {}; + $scope.manageableUsers = []; - // Add user to overall list - addedUsers[user.username] = user; - $scope.manageableUsers.push(new ManageableUser ({ - 'dataSource' : dataSource, - 'user' : user - })); + // For each user in each data source + angular.forEach(dataSources, function addUserList(dataSource) { + angular.forEach(userArrays[dataSource], function addUser(user) { + // Do not add the same user twice + if (addedUsers[user.username]) + return; + + // Add user to overall list + addedUsers[user.username] = user; + $scope.manageableUsers.push(new ManageableUser ({ + 'dataSource' : dataSource, + 'user' : user + })); + + }); }); + }); });