auth.service.js
2.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
(function() {
'use strict';
angular
.module('noosferoApp')
.factory('Session', Session)
.factory('AuthService', AuthService);
/** @ngInject */
function AuthService($q, $http, $rootScope, Session, $log, AUTH_EVENTS) {
function login (credentials) {
var url = '/api/v1/login';
var encodedData = 'login=' + credentials.username + '&password=' + credentials.password;
return $http.post(url, encodedData).then(loginSuccessCallback, loginFailedCallback);
}
function loginFromCookie() {
var url = '/api/v1/login_from_cookie';
return $http.post(url).then(loginSuccessCallback, loginFailedCallback);
}
function loginSuccessCallback(response) {
$log.debug('AuthService.login [SUCCESS] response', response);
var currentUser = Session.create(response.data);
$rootScope.currentUser = currentUser;
$rootScope.$broadcast(AUTH_EVENTS.loginSuccess, currentUser);
return currentUser;
}
function loginFailedCallback(response) {
$log.debug('AuthService.login [FAIL] response', response);
$rootScope.$broadcast(AUTH_EVENTS.loginFailed);
// return $q.reject(response);
return null;
}
function logout () {
Session.destroy();
$rootScope.currentUser = undefined;
$rootScope.$broadcast(AUTH_EVENTS.logoutSuccess);
$http.jsonp('/account/logout'); //FIXME logout from noosfero to sync login state
}
function isAuthenticated () {
return !!Session.userId;
}
function isAuthorized (authorizedRoles) {
if (!angular.isArray(authorizedRoles)) {
authorizedRoles = [authorizedRoles];
}
return (service.isAuthenticated() && authorizedRoles.indexOf(Session.userRole) !== -1);
}
var service = {
login: login,
loginFromCookie: loginFromCookie,
logout: logout,
isAuthenticated: isAuthenticated,
isAuthorized: isAuthorized
};
return service;
}
/** @ngInject */
function Session($localStorage, $log) {
var service = {};
service.create = function(data) {
$localStorage.currentUser = data.user;
$log.debug('User session created.', $localStorage.currentUser);
return $localStorage.currentUser;
};
service.destroy = function() {
delete $localStorage.currentUser;
$log.debug('User session destroyed.');
};
service.getCurrentUser = function () {
return $localStorage.currentUser;
};
return service;
}
})();