diff --git a/src/views/users.js b/src/views/users.js
index 255217fd6..c9b3f2077 100644
--- a/src/views/users.js
+++ b/src/views/users.js
@@ -8,6 +8,7 @@ angular.module('Application').controller('UsersController', ['$scope', '$locatio
$scope.ready = false;
$scope.users = [];
+ $scope.usersById = [];
$scope.groups = [];
$scope.groupsById = { };
$scope.config = Client.getConfig();
@@ -286,6 +287,8 @@ angular.module('Application').controller('UsersController', ['$scope', '$locatio
error: {},
groupInfo: {},
name: '',
+ selectedUsers: [],
+
roles: {
canManageUsers: false,
canManageApps: false,
@@ -296,6 +299,7 @@ angular.module('Application').controller('UsersController', ['$scope', '$locatio
$scope.groupEdit.error = {};
$scope.groupEdit.groupInfo = groupInfo;
$scope.groupEdit.name = groupInfo.name;
+ $scope.groupEdit.selectedUsers = groupInfo.userIds.map(function (uid) { return $scope.usersById[uid]; });
for (var i = 0; i < groupInfo.roles.length; i++) {
switch (groupInfo.roles[i]) {
@@ -322,7 +326,7 @@ angular.module('Application').controller('UsersController', ['$scope', '$locatio
if ($scope.groupEdit.roles.canManageDomains) roles.push('manage_domains');
Client.updateGroup($scope.groupEdit.groupInfo.id, $scope.groupEdit.name, roles, function (error) {
- $scope.groupEdit.busy = false;
+ $scope.groupEdit.busy = !!error;
if (error && error.statusCode === 409) {
$scope.groupEdit.error.name = 'Name already taken';
@@ -337,9 +341,17 @@ angular.module('Application').controller('UsersController', ['$scope', '$locatio
}
if (error) return console.error('Unable to edit group.', error.statusCode, error.message);
- refresh();
+ var userIds = $scope.groupEdit.selectedUsers.map(function (u) { return u.id; });
- $('#groupEditModal').modal('hide');
+ Client.setGroupMembers($scope.groupEdit.groupInfo.id, userIds, function (error) {
+ $scope.groupEdit.busy = false;
+
+ if (error) return console.error('Unable to edit group.', error.statusCode, error.message);
+
+ refresh();
+
+ $('#groupEditModal').modal('hide');
+ });
});
}
};
@@ -464,7 +476,7 @@ angular.module('Application').controller('UsersController', ['$scope', '$locatio
getGroups(function (error, result) {
if (error) return console.error('Unable to get group listing.', error);
- $scope.groups = result;
+ angular.copy(result, $scope.groups);
$scope.groupsById = { };
for (var i = 0; i < result.length; i++) {
$scope.groupsById[result[i].id] = result[i];
@@ -473,7 +485,11 @@ angular.module('Application').controller('UsersController', ['$scope', '$locatio
getUsers(function (error, result) {
if (error) return console.error('Unable to get user listing.', error);
- $scope.users = result;
+ angular.copy(result, $scope.users);
+ $scope.usersById = { };
+ for (var i = 0; i < result.length; i++) {
+ $scope.usersById[result[i].id] = result[i];
+ }
$scope.ready = true;
});