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

121 lines
3.3 KiB
JavaScript
Raw Normal View History

2015-07-28 16:53:29 +02:00
/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
(function() {
'use strict';
/**
* @ngInject
*/
AclController.$inject = ['$document', '$timeout', '$mdDialog', 'Dialog', 'usersWithACL', 'User', 'folder'];
function AclController($document, $timeout, $mdDialog, Dialog, usersWithACL, User, folder) {
2015-07-28 16:53:29 +02:00
var vm = this;
vm.users = usersWithACL; // ACL users
vm.folder = folder;
vm.selectedUser = null;
2015-10-09 22:49:08 +02:00
vm.selectedUid = null;
2015-07-28 16:53:29 +02:00
vm.userToAdd = '';
vm.searchText = '';
vm.folderClassName = folderClassName;
vm.templateName = templateName;
2015-07-28 16:53:29 +02:00
vm.userFilter = userFilter;
vm.closeModal = closeModal;
vm.saveModal = saveModal;
vm.confirmChange = confirmChange;
vm.removeUser = removeUser;
vm.addUser = addUser;
vm.toggleAllRights = toggleAllRights;
2015-07-28 16:53:29 +02:00
vm.selectUser = selectUser;
vm.hasNoRight = hasNoRight;
vm.showRights = showRights;
vm.confirmation = { showing: false,
message: ''};
2015-07-28 16:53:29 +02:00
function folderClassName() {
if (angular.isFunction(folder.getClassName))
return folder.getClassName('bg');
else
return false;
}
function templateName(user) {
// Check if user is anonymous and if a specific template must be used
var isAnonymous = $document[0].getElementById('UIxAnonymousUserRightsEditor') && user.$isAnonymous();
return 'UIx' + (isAnonymous? 'Anonymous' : '') + 'UserRightsEditor';
}
2015-07-28 16:53:29 +02:00
function userFilter($query) {
return User.$filter($query, folder.$acl.users, { dry: true });
2015-07-28 16:53:29 +02:00
}
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.'));
2015-07-28 16:53:29 +02:00
});
}
function confirmChange(user) {
var confirmation = user.$confirmRights(vm.folder);
2015-07-28 16:53:29 +02:00
if (confirmation) {
vm.confirmation.showing = true;
vm.confirmation.message = confirmation;
2015-07-28 16:53:29 +02:00
}
}
function removeUser(user) {
2016-06-20 22:10:52 +02:00
$timeout(function() {
folder.$acl.$removeUser(user.uid);
}, 500); // wait for CSS transition to complete (see card.scss)
}
2015-07-28 16:53:29 +02:00
function addUser(data) {
if (data) {
folder.$acl.$addUser(data).then(function(user) {
2015-07-28 16:53:29 +02:00
vm.userToAdd = '';
vm.searchText = '';
vm.selectedUid = null;
if (user)
selectUser(user);
2015-07-28 16:53:29 +02:00
});
}
}
function toggleAllRights(user) {
folder.$acl.$toggleAllRights(user);
2016-06-20 22:10:52 +02:00
}
function selectUser(user, $event) {
if ($event && $event.target.parentNode.classList.contains('md-secondary'))
return false;
2015-10-09 22:49:08 +02:00
if (vm.selectedUid == user.uid) {
vm.selectedUid = null;
}
else {
2015-10-09 22:49:08 +02:00
vm.selectedUid = user.uid;
2015-07-28 16:53:29 +02:00
vm.selectedUser = user;
if (!user.inactive)
vm.selectedUser.$rights();
2015-07-28 16:53:29 +02:00
}
}
function hasNoRight(user) {
return folder.$acl.$hasNoRight(user);
}
function showRights(user) {
return vm.selectedUid == user.uid && !user.inactive;
}
2015-07-28 16:53:29 +02:00
}
2015-08-07 17:02:34 +02:00
angular
.module('SOGo.Common')
.controller('AclController', AclController);
2015-07-28 16:53:29 +02:00
})();