Allow groups to be set during user add

This commit is contained in:
Girish Ramakrishnan
2018-07-24 22:38:53 -07:00
parent 8c2af87857
commit cae445556e
2 changed files with 66 additions and 46 deletions

View File

@@ -75,12 +75,16 @@ angular.module('Application').controller('UsersController', ['$scope', '$locatio
username: '',
displayName: '',
sendInvite: true,
selectedGroups: [],
superuser: false,
show: function () {
$scope.useradd.error = {};
$scope.useradd.email = '';
$scope.useradd.username = '';
$scope.useradd.displayName = '';
$scope.useradd.selectedGroups = [];
$scope.useradd.superuser = false;
$scope.useradd_form.$setUntouched();
$scope.useradd_form.$setPristine();
@@ -96,52 +100,60 @@ angular.module('Application').controller('UsersController', ['$scope', '$locatio
$scope.useradd.error.username = null;
$scope.useradd.error.displayName = null;
Client.createUser($scope.useradd.username || null, $scope.useradd.email, $scope.useradd.displayName, $scope.useradd.sendInvite, function (error) {
$scope.useradd.busy = false;
Client.createUser($scope.useradd.username || null, $scope.useradd.email, $scope.useradd.displayName, $scope.useradd.sendInvite, function (error, newUserInfo) {
if (error) {
$scope.useradd.busy = false;
if (error && error.statusCode === 409) {
if (error.message.toLowerCase().indexOf('email') !== -1) {
$scope.useradd.error.email = 'Email already taken';
$scope.useradd_form.email.$setPristine();
$('#inputUserAddEmail').focus();
} else if (error.message.toLowerCase().indexOf('username') !== -1 || error.message.toLowerCase().indexOf('mailbox') !== -1) {
$scope.useradd.error.username = 'Username already taken';
$scope.useradd_form.username.$setPristine();
$('#inputUserAddUsername').focus();
if (error.statusCode === 409) {
if (error.message.toLowerCase().indexOf('email') !== -1) {
$scope.useradd.error.email = 'Email already taken';
$scope.useradd_form.email.$setPristine();
$('#inputUserAddEmail').focus();
} else if (error.message.toLowerCase().indexOf('username') !== -1 || error.message.toLowerCase().indexOf('mailbox') !== -1) {
$scope.useradd.error.username = 'Username already taken';
$scope.useradd_form.username.$setPristine();
$('#inputUserAddUsername').focus();
} else {
// should not happen!!
console.error(error.message);
}
return;
} else if (error.statusCode === 400) {
if (error.message.toLowerCase().indexOf('email') !== -1) {
$scope.useradd.error.email = 'Invalid Email';
$scope.useradd.error.emailAttempted = $scope.useradd.email;
$scope.useradd_form.email.$setPristine();
$('#inputUserAddEmail').focus();
} else if (error.message.toLowerCase().indexOf('username') !== -1) {
$scope.useradd.error.username = error.message;
$scope.useradd_form.username.$setPristine();
$('#inputUserAddUsername').focus();
} else {
console.error('Unable to create user.', error.statusCode, error.message);
}
return;
} else {
// should not happen!!
console.error(error.message);
return console.error('Unable to create user.', error.statusCode, error.message);
}
return;
}
if (error && error.statusCode === 400) {
if (error.message.toLowerCase().indexOf('email') !== -1) {
$scope.useradd.error.email = 'Invalid Email';
$scope.useradd.error.emailAttempted = $scope.useradd.email;
$scope.useradd_form.email.$setPristine();
$('#inputUserAddEmail').focus();
} else if (error.message.toLowerCase().indexOf('username') !== -1) {
$scope.useradd.error.username = error.message;
$scope.useradd_form.username.$setPristine();
$('#inputUserAddUsername').focus();
} else {
console.error('Unable to create user.', error.statusCode, error.message);
}
return;
var groupIds = $scope.useradd.selectedGroups.map(function (g) { return g.id; });
if ($scope.useradd.superuser) {
if (groupIds.indexOf('admin') === -1) groupIds.push('admin');
} else {
groupIds = groupIds.filter(function (groupId) { return groupId !== 'admin'; });
}
if (error) return console.error('Unable to create user.', error.statusCode, error.message);
$scope.useradd.error = {};
$scope.useradd.email = '';
$scope.useradd.username = '';
$scope.useradd.displayName = '';
Client.setGroups(newUserInfo.id, groupIds, function (error) {
$scope.useradd.busy = false;
$scope.useradd_form.$setUntouched();
$scope.useradd_form.$setPristine();
if (error) return console.error('Unable to update groups for user:', error);
refresh();
refresh();
$('#userAddModal').modal('hide');
$('#userAddModal').modal('hide');
});
});
}
};
@@ -208,17 +220,9 @@ angular.module('Application').controller('UsersController', ['$scope', '$locatio
}
Client.setGroups(data.id, groupIds, function (error) {
if (error) return console.error('Unable to update groups for user:', error);
$scope.useredit.busy = false;
$scope.useredit.userInfo = {};
$scope.useredit.email = '';
$scope.useredit.displayName = '';
$scope.useredit.superuser = false;
$scope.useredit.groups = [];
$scope.useredit_form.$setPristine();
$scope.useredit_form.$setUntouched();
if (error) return console.error('Unable to update groups for user:', error);
refresh();