diff --git a/src/user.js b/src/user.js index 8ffde5ba9..22133294e 100644 --- a/src/user.js +++ b/src/user.js @@ -342,7 +342,7 @@ function updateUser(userId, username, email, displayName, auditSource, callback) if (error) return callback(new UserError(UserError.INTERNAL_ERROR, error)); eventlog.add(eventlog.ACTION_USER_UPDATE, auditSource, { userId: userId }); - if (username) mailboxes.add(username, NOOP_CALLBACK); + if (username) mailboxes.add(username, NOOP_CALLBACK); // TODO: do this only when username actually changes callback(null); }); diff --git a/webadmin/src/js/client.js b/webadmin/src/js/client.js index 4d99d02a1..eb3e15b8f 100644 --- a/webadmin/src/js/client.js +++ b/webadmin/src/js/client.js @@ -622,14 +622,14 @@ angular.module('Application').service('Client', ['$http', 'md5', 'Notification', }).error(defaultErrorHandler(callback)); }; - Client.prototype.setAliases = function (username, aliases, callback) { + Client.prototype.setAliases = function (name, aliases, callback) { var data = { aliases: aliases }; $http.put(client.apiOrigin + '/api/v1/mailboxes/' + name + '/aliases', data).success(function(data, status) { - if (status !== 200 || typeof data !== 'object') return callback(new ClientError(status, data)); - callback(null, data); + if (status !== 200) return callback(new ClientError(status, data)); + callback(null); }).error(defaultErrorHandler(callback)); }; diff --git a/webadmin/src/views/users.html b/webadmin/src/views/users.html index bc15db4e6..ceb90d70a 100644 --- a/webadmin/src/views/users.html +++ b/webadmin/src/views/users.html @@ -99,7 +99,7 @@
-
+
diff --git a/webadmin/src/views/users.js b/webadmin/src/views/users.js index 807fd8012..78d58e9c9 100644 --- a/webadmin/src/views/users.js +++ b/webadmin/src/views/users.js @@ -8,6 +8,7 @@ angular.module('Application').controller('UsersController', ['$scope', '$locatio $scope.groups = []; $scope.config = Client.getConfig(); $scope.userInfo = Client.getUserInfo(); + $scope.mailboxes = []; $scope.userremove = { busy: false, @@ -216,10 +217,15 @@ angular.module('Application').controller('UsersController', ['$scope', '$locatio $scope.useredit.error.email = null; $scope.useredit.email = userInfo.email; $scope.useredit.userInfo = userInfo; - $scope.useredit.aliases = mailboxes[userInfo.username].aliases.join(','); $scope.useredit.groupIds = angular.copy(userInfo.groupIds); $scope.useredit.superuser = userInfo.groupIds.indexOf('admin') !== -1; + $scope.useredit.aliases = ''; + for (var i = 0; i < $scope.mailboxes.length; i++) { + if ($scope.mailboxes[i].name !== userInfo.username) continue; + $scope.useredit.aliases = $scope.mailboxes[i].aliases.join(','); + } + $scope.useredit_form.$setPristine(); $scope.useredit_form.$setUntouched(); @@ -259,7 +265,8 @@ angular.module('Application').controller('UsersController', ['$scope', '$locatio Client.setGroups(data.id, $scope.useredit.groupIds, function (error) { if (error) return console.error('Unable to update groups for user:', error); - Client.setAliases($scope.useredit.userInfo.username, $scope.useredit.aliases.split(','), function (error) { + var aliases = $scope.useredit.aliases ? $scope.useredit.aliases.split(',') : [ ]; + Client.setAliases($scope.useredit.userInfo.username, aliases, function (error) { $scope.useredit.busy = false; if (error) return console.error('Unable to update aliases for user:', error);