/** * Created by robin on 11/1/15. */ (function () { 'use strict'; angular.module('luticateAuth') .factory('luticateAuthUsers', ['luticateAuthUsersDataAccess', '$q', 'luticateAuthCache', 'luticateAuthPermissions', 'luticateAuthSettings', function(luticateAuthUsersDataAccess, $q, luticateAuthCache, luticateAuthPermissions, luticateAuthSettings) { var luticateAuthUsers = { getAll: luticateAuthUsersDataAccess.getAll, get: luticateAuthUsersDataAccess.get, getMe: luticateAuthUsersDataAccess.getMe, edit: luticateAuthUsersDataAccess.edit, editMe: luticateAuthUsersDataAccess.editMe, add: luticateAuthUsersDataAccess.add, setPassword: luticateAuthUsersDataAccess.setPassword, setPasswordMe: luticateAuthUsersDataAccess.setPasswordMe, del: luticateAuthUsersDataAccess.del }; luticateAuthUsers.login = function(data, promise) { var defer = $q.defer(); luticateAuthUsersDataAccess.login(data, promise) .then(function(user) { luticateAuthCache.setUser(user); luticateAuthUsers.loadUserData(promise).then(function() { defer.resolve(user); }, function(error) { luticateAuthUsers.removeUserData(); defer.reject(error); }); }, function(error) { luticateAuthUsers.removeUserData(); defer.reject(error); }); return defer.promise; }; luticateAuthUsers.logout = function(promise) { var defer = $q.defer(); luticateAuthUsersDataAccess.logout(promise) .finally(function() { luticateAuthUsers.removeUserData(); luticateAuthUsers.loadUserData().finally(defer.resolve); }); return defer.promise; }; luticateAuthUsers.loadUserData = function(promise) { luticateAuthCache.removeEffectivePermissions(); luticateAuthCache.removeEffectiveSettings(); var defer = $q.defer(); luticateAuthSettings.loadSettings(promise) .then(function() { luticateAuthPermissions.loadPermissions(promise) .then(defer.resolve, function(error) { luticateAuthUsers.removeUserData(); defer.reject(error); }); }, function(error) { luticateAuthUsers.removeUserData(); defer.reject(error); }); return defer.promise; }; //For backward compatibility luticateAuthUsers.loadPermissions = luticateAuthUsers.loadUserData; luticateAuthUsers.removeUserData = function() { luticateAuthCache.removeEffectivePermissions(); luticateAuthCache.removeEffectiveSettings(); luticateAuthCache.removeUser(); }; return luticateAuthUsers; }]); })();