/** * Created by robin on 11/2/15. */ angular.module('luticate') .controller('UserEditController', ['$scope', 'luticateAuthUsers', 'data', '$q', 'dialogs', 'luticateAuthCache', function($scope, luticateAuthUsers, data, $q, dialogs, luticateAuthCache) { if (data != null) { $scope.user = data; $scope.permission = "LU_USER_EDIT"; $scope.permissionPassword = "LU_USER_SET_PASSWORD"; } else { $scope.user = { Username: "", Email: "", Firstname: "", Lastname: "" }; $scope.permission = "LU_USER_ADD"; $scope.permissionPassword = "LU_USER_ADD"; } $scope.userPassword = { value: "", confirm: "" }; $scope.passwordValidation = { length: '$value.length >= 5 || $value.length == 0' }; $scope.password2Validation = { same_passwords: 'userPassword.value==$value' }; $scope.submitForm = function() { if ($scope.user.Id != null) { var promiseEditUser = { id: "promiseEditUser", loaderGroups: ["modal"] }; var defer = $q.defer(); if (luticateAuthCache.hasEffectivePermission("LU_USER_EDIT")) { luticateAuthUsers.edit({ user_id: $scope.user.Id, email: $scope.user.Email, firstname: $scope.user.Firstname, lastname: $scope.user.Lastname }, promiseEditUser) .then(function(data) { $scope.mayEditPassword(defer); }, defer.reject); } else { $scope.mayEditPassword(defer); } return defer.promise; } else { var promiseAddUser = { id: "promiseAddUser", loaderGroups: ["modal"] }; var user = { username: $scope.user.Username, email: $scope.user.Email, firstname: $scope.user.Firstname, lastname: $scope.user.Lastname, password: $scope.userPassword.value }; return luticateAuthUsers.add(user, promiseAddUser); } }; $scope.mayEditPassword = function(defer) { var promiseSetPassword = { id: "promiseSetPassword", loaderGroups: ["modal"] }; if ($scope.userPassword.value != "" && luticateAuthCache.hasEffectivePermission("LU_USER_SET_PASSWORD")) { luticateAuthUsers.setPassword({ user_id: $scope.user.Id, password: $scope.userPassword.value }, promiseSetPassword) .then(defer.resolve, defer.reject); } else { defer.resolve(data); } }; $scope.editPermissions = function(user) { dialogs.create('views/modals/userpermissions.html', 'UserPermissionsController', user); }; $scope.showEffectivePermissions = function(user) { dialogs.create('views/modals/usereffectivepermissions.html', 'UserEffectivePermissionsController', user); }; $scope.canEditPermissions = function() { return $scope.user.Id != null && luticateAuthCache.hasEffectivePermission("LU_PERM_USER_GET"); } }]);