60 lines
1.6 KiB
JavaScript
60 lines
1.6 KiB
JavaScript
/* exported UserListController */
|
|
/* global $:true */
|
|
|
|
'use strict';
|
|
|
|
function UserListController ($scope, Client) {
|
|
$scope.ready = false;
|
|
$scope.users = [];
|
|
$scope.userInfo = Client.getUserInfo();
|
|
$scope.userDeleteForm = {
|
|
username: '',
|
|
password: ''
|
|
};
|
|
|
|
$scope.isMe = function (user) {
|
|
return user.username === Client.getUserInfo().username;
|
|
};
|
|
|
|
$scope.isAdmin = function (user) {
|
|
return !!user.admin;
|
|
};
|
|
|
|
$scope.toggleAdmin = function (user) {
|
|
Client.setAdmin(user.username, !user.admin, function (error) {
|
|
if (error) return console.error(error);
|
|
|
|
user.admin = !user.admin;
|
|
});
|
|
};
|
|
|
|
$scope.deleteUser = function (user) {
|
|
// TODO add busy indicator and block form
|
|
if ($scope.userDeleteForm.username !== user.username) return console.error('Username does not match');
|
|
|
|
Client.removeUser(user.username, $scope.userDeleteForm.password, function (error, result) {
|
|
if (error && error.statusCode === 401) return console.error('Wrong password');
|
|
if (error) return console.error('Unable to delete user.', error);
|
|
|
|
$('#userDeleteModal-' + user.username).modal('hide');
|
|
|
|
refresh();
|
|
});
|
|
};
|
|
|
|
function refresh() {
|
|
Client.listUsers(function (error, result) {
|
|
if (error) return console.error('Unable to get user listing.', error);
|
|
|
|
$scope.users = result.users;
|
|
$scope.ready = true;
|
|
});
|
|
}
|
|
|
|
$scope.addUser = function () {
|
|
window.location.href = '#/usercreate';
|
|
};
|
|
|
|
refresh();
|
|
}
|