group useredit functions

This commit is contained in:
Girish Ramakrishnan
2016-09-28 11:52:00 -07:00
parent 36a91bb51a
commit 601aa7f5cd
2 changed files with 99 additions and 99 deletions

View File

@@ -156,7 +156,98 @@ angular.module('Application').controller('UsersController', ['$scope', '$locatio
userInfo: {},
email: '',
aliases: '',
superuser: false
superuser: false,
show: function (userInfo) {
$scope.useredit.error.email = null;
$scope.useredit.email = userInfo.alternateEmail || userInfo.email;
$scope.useredit.userInfo = userInfo;
$scope.useredit.groupIds = angular.copy(userInfo.groupIds);
$scope.useredit.superuser = userInfo.groupIds.indexOf('admin') !== -1;
$scope.useredit.aliases = '';
Client.getAliases(userInfo.id, function (error, aliases) {
if (error) console.error(error);
$scope.useredit.aliases = aliases.join(',');
});
$scope.useredit_form.$setPristine();
$scope.useredit_form.$setUntouched();
$('#userEditModal').modal('show');
},
toggleGroup: function (group) {
var pos = $scope.useredit.groupIds.indexOf(group.id);
if (pos === -1) {
$scope.useredit.groupIds.push(group.id);
} else {
$scope.useredit.groupIds.splice(pos, 1);
}
},
submit: function () {
$scope.useredit.error.email = null;
$scope.useredit.busy = true;
var data = {
id: $scope.useredit.userInfo.id,
email: $scope.useredit.email
};
Client.updateUser(data, function (error) {
if (error) {
$scope.useredit.busy = false;
if (error.statusCode === 409) {
$scope.useredit.error.email = 'Email already taken';
$scope.useredit_form.email.$setPristine();
$('#inputUserEditEmail').focus();
} else {
console.error('Unable to update user:', error);
}
return;
}
if ($scope.useredit.superuser) {
if ($scope.useredit.groupIds.indexOf('admin') === -1) $scope.useredit.groupIds.push('admin');
} else {
$scope.useredit.groupIds = $scope.useredit.groupIds.filter(function (groupId) { return groupId !== 'admin'; });
}
Client.setGroups(data.id, $scope.useredit.groupIds, function (error) {
if (error) return console.error('Unable to update groups for user:', error);
var aliases = $scope.useredit.aliases ? $scope.useredit.aliases.split(',') : [ ];
var setAliasesFunc = Client.setAliases.bind(null, $scope.useredit.userInfo.id, aliases);
// cannot set aliases without username
if (!$scope.useredit.userInfo.username) setAliasesFunc = function (next) { return next(); };
setAliasesFunc(function (error) {
$scope.useredit.busy = false;
if (error) return console.error('Unable to update aliases for user:', error);
$scope.useredit.userInfo = {};
$scope.useredit.email = '';
$scope.useredit.superuser = false;
$scope.useredit.groupIds = [];
$scope.useredit.aliases = '';
$scope.useredit_form.$setPristine();
$scope.useredit_form.$setUntouched();
refresh();
$('#userEditModal').modal('hide');
});
});
});
}
};
$scope.showBubble = function ($event) {
@@ -287,97 +378,6 @@ angular.module('Application').controller('UsersController', ['$scope', '$locatio
});
};
$scope.showUserEdit = function (userInfo) {
$scope.useredit.error.email = null;
$scope.useredit.email = userInfo.alternateEmail || userInfo.email;
$scope.useredit.userInfo = userInfo;
$scope.useredit.groupIds = angular.copy(userInfo.groupIds);
$scope.useredit.superuser = userInfo.groupIds.indexOf('admin') !== -1;
$scope.useredit.aliases = '';
Client.getAliases(userInfo.id, function (error, aliases) {
if (error) console.error(error);
$scope.useredit.aliases = aliases.join(',');
});
$scope.useredit_form.$setPristine();
$scope.useredit_form.$setUntouched();
$('#userEditModal').modal('show');
};
$scope.userEditToggleGroup = function (group) {
var pos = $scope.useredit.groupIds.indexOf(group.id);
if (pos === -1) {
$scope.useredit.groupIds.push(group.id);
} else {
$scope.useredit.groupIds.splice(pos, 1);
}
};
$scope.doUserEdit = function () {
$scope.useredit.error.email = null;
$scope.useredit.busy = true;
var data = {
id: $scope.useredit.userInfo.id,
email: $scope.useredit.email
};
Client.updateUser(data, function (error) {
if (error) {
$scope.useredit.busy = false;
if (error.statusCode === 409) {
$scope.useredit.error.email = 'Email already taken';
$scope.useredit_form.email.$setPristine();
$('#inputUserEditEmail').focus();
} else {
console.error('Unable to update user:', error);
}
return;
}
if ($scope.useredit.superuser) {
if ($scope.useredit.groupIds.indexOf('admin') === -1) $scope.useredit.groupIds.push('admin');
} else {
$scope.useredit.groupIds = $scope.useredit.groupIds.filter(function (groupId) { return groupId !== 'admin'; });
}
Client.setGroups(data.id, $scope.useredit.groupIds, function (error) {
if (error) return console.error('Unable to update groups for user:', error);
var aliases = $scope.useredit.aliases ? $scope.useredit.aliases.split(',') : [ ];
var setAliasesFunc = Client.setAliases.bind(null, $scope.useredit.userInfo.id, aliases);
// cannot set aliases without username
if (!$scope.useredit.userInfo.username) setAliasesFunc = function (next) { return next(); };
setAliasesFunc(function (error) {
$scope.useredit.busy = false;
if (error) return console.error('Unable to update aliases for user:', error);
$scope.useredit.userInfo = {};
$scope.useredit.email = '';
$scope.useredit.superuser = false;
$scope.useredit.groupIds = [];
$scope.useredit.aliases = '';
$scope.useredit_form.$setPristine();
$scope.useredit_form.$setUntouched();
refresh();
$('#userEditModal').modal('hide');
});
});
});
};
$scope.showUserHelp = function () {
$('#userHelpModal').modal('show');
};