/** * Created by robin on 11/1/15. */ (function () { 'use strict'; angular.module('luticateAuth') .factory('luticateAuthUsers', ['luticateRequest', '$q', 'luticateAuthCache', 'luticateAuthPermissions', function(luticateRequest, $q, luticateAuthCache, luticateAuthPermissions) { var luticateAuthUsers = {}; luticateAuthUsers.login = function(data, promise) { var defer = $q.defer(); luticateRequest.post("/api/luticate/users/login", data, null, promise) .then(function(user) { luticateAuthCache.setUser(user); luticateAuthUsers.loadPermissions(promise) .then(function(permissions) { defer.resolve(user); }, function(error) { luticateAuthCache.removeUser(); defer.reject(error); }); }, function(error) { luticateAuthCache.removeUser(); luticateAuthUsers.loadPermissions(promise) .then(function(permissions) { defer.reject(error); }, function(error) { defer.reject(error); }); }); return defer.promise; }; luticateAuthUsers.loadPermissions = function(promise) { var defer = $q.defer(); luticateAuthPermissions.getAllEffectiveMe(promise) .then(function(permissions) { var perms = {}; for (var i = 0; i < permissions.Data.length; ++i) { var p = permissions.Data[i]; perms[p.Name] = p.Value; } luticateAuthCache.setEffectivePermissions(perms); defer.resolve(permissions.Data); }, defer.reject); return defer.promise; }; luticateAuthUsers.logout = function(promise) { var defer = $q.defer(); luticateRequest.post("/api/luticate/users/logout", null, null, promise) .finally(function() { luticateAuthCache.removeUser(); luticateAuthUsers.loadPermissions(promise) .finally(defer.resolve); }); return defer.promise; }; luticateAuthUsers.getAll = function(data, promise) { return luticateRequest.get("/api/luticate/users", data, promise); }; luticateAuthUsers.get = function(data, promise) { return luticateRequest.get("/api/luticate/users/" + data.user_id, null, promise); }; luticateAuthUsers.getMe = function(promise) { return luticateRequest.get("/api/luticate/users/me", null, promise); }; luticateAuthUsers.edit = function(data, promise) { return luticateRequest.post("/api/luticate/users/" + data.user_id + "/edit", data, null, promise); }; luticateAuthUsers.editMe = function(data, promise) { return luticateRequest.post("/api/luticate/users/me/edit", data, null, promise); }; luticateAuthUsers.add = function(data, promise) { return luticateRequest.post("/api/luticate/users/add", data, null, promise); }; luticateAuthUsers.setPassword = function(data, promise) { return luticateRequest.post("/api/luticate/users/" + data.user_id + "/setPassword", data, null, promise); }; luticateAuthUsers.setPasswordMe = function(data, promise) { return luticateRequest.post("/api/luticate/users/me/setPassword", data, null, promise); }; luticateAuthUsers.del = function(data, promise) { return luticateRequest.post("/api/luticate/users/" + data.user_id + "/del", null, null, promise); }; return luticateAuthUsers; }]); })();