/
mvAuth.js
70 lines (63 loc) · 1.92 KB
/
mvAuth.js
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
angular.module('app').factory('mvAuth', function($http, mvIdentity, $q, mvUser) {
return {
authenticateUser: function(username, password) {
var dfd = $q.defer();
$http.post('/login', {username:username, password:password}).then(function(response) {
if(response.data.success) {
var user = new mvUser();
angular.extend(user, response.data.user);
mvIdentity.currentUser = user;
dfd.resolve(true);
} else {
dfd.resolve(false);
}
});
return dfd.promise;
},
createUser: function(newUserData) {
var newUser = new mvUser(newUserData);
var dfd = $q.defer();
newUser.$save().then(function() {
mvIdentity.currentUser = newUser;
dfd.resolve();
}, function(response) {
dfd.reject(response.data.reason);
});
return dfd.promise;
},
updateCurrentUser: function(newUserData) {
var dfd = $q.defer();
var clone = angular.copy(mvIdentity.currentUser);
angular.extend(clone, newUserData);
clone.$update().then(function() {
mvIdentity.currentUser = clone;
dfd.resolve();
}, function(response) {
dfd.reject(response.data.reason);
});
return dfd.promise;
},
logoutUser: function() {
var dfd = $q.defer();
$http.post('/logout', {logout:true}).then(function() {
mvIdentity.currentUser = undefined;
dfd.resolve();
});
return dfd.promise;
},
authorizeCurrentUserForRoute: function(role) {
if(mvIdentity.isAuthorized(role)) {
return true;
} else {
return $q.reject('not authorized');
}
},
authorizeAuthenticatedUserForRoute: function() {
if(mvIdentity.isAuthenticated()) {
return true;
} else {
return $q.reject('not authorized');
}
}
}
});