sogo/UI/WebServerResources/js/Common/AclController.js

85 lines
2.1 KiB
JavaScript

/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
(function() {
'use strict';
/**
* @ngInject
*/
AclController.$inject = ['$mdDialog', 'Dialog', 'usersWithACL', 'User', 'folder'];
function AclController($mdDialog, Dialog, usersWithACL, User, folder) {
var vm = this;
vm.users = usersWithACL; // ACL users
vm.folder = folder;
vm.selectedUser = null;
vm.userToAdd = '';
vm.searchText = '';
vm.userFilter = userFilter;
vm.closeModal = closeModal;
vm.saveModal = saveModal;
vm.confirmChange = confirmChange;
vm.removeUser = removeUser;
vm.addUser = addUser;
vm.selectUser = selectUser;
vm.confirmation = { showing: false,
message: ''};
function userFilter($query) {
return User.$filter($query, folder.$acl.users);
}
function closeModal() {
folder.$acl.$resetUsersRights(); // cancel changes
$mdDialog.hide();
}
function saveModal() {
folder.$acl.$saveUsersRights().then(function() {
$mdDialog.hide();
}, function(data, status) {
Dialog.alert(l('Warning'), l('An error occured please try again.'));
});
}
function confirmChange(user) {
var confirmation = user.$confirmRights();
if (confirmation) {
vm.confirmation.showing = true;
vm.confirmation.message = confirmation;
}
}
function removeUser(user) {
folder.$acl.$removeUser(user.uid).catch(function(data, status) {
Dialog.alert(l('Warning'), l('An error occured please try again.'));
});
}
function addUser(data) {
if (data) {
folder.$acl.$addUser(data).then(function() {
vm.userToAdd = '';
vm.searchText = '';
}, function(error) {
Dialog.alert(l('Warning'), error);
});
}
}
function selectUser(user) {
if (vm.selectedUser == user) {
vm.selectedUser = null;
}
else {
vm.selectedUser = user;
vm.selectedUser.$rights();
}
}
}
angular
.module('SOGo.Common')
.controller('AclController', AclController);
})();