tellform/public/modules/users/services/auth.client.service.js

65 lines
1.6 KiB
JavaScript
Raw Normal View History

2015-06-30 19:42:02 +00:00
'use strict';
2018-09-11 20:59:07 +00:00
angular.module('users').factory('Auth', ['$window', 'User',
function($window, User) {
2015-08-18 21:44:36 +00:00
var userState = {
2015-06-30 19:42:02 +00:00
isLoggedIn: false
};
2015-07-02 02:49:35 +00:00
var service = {
_currentUser: null,
get currentUser(){
return this._currentUser;
},
2015-06-30 19:42:02 +00:00
// Note: we can't make the User a dependency of Auth
// because that would create a circular dependency
// Auth <- $http <- $resource <- LoopBackResource <- User <- Auth
2018-09-11 20:59:07 +00:00
ensureHasCurrentUser: function() {
if (service._currentUser && service._currentUser.username) {
return service._currentUser;
} else if ($window.user){
service._currentUser = $window.user;
return service._currentUser;
} else {
2015-07-01 23:14:39 +00:00
User.getCurrent().then(function(user) {
2015-06-30 19:42:02 +00:00
// success
service._currentUser = user;
userState.isLoggedIn = true;
$window.user = service._currentUser;
return service._currentUser;
2015-06-30 19:42:02 +00:00
},
function(response) {
userState.isLoggedIn = false;
service._currentUser = null;
2015-07-01 23:14:39 +00:00
$window.user = null;
2015-06-30 20:57:20 +00:00
return null;
2015-06-30 19:42:02 +00:00
});
}
},
2015-07-01 23:14:39 +00:00
isAuthenticated: function() {
return !!service._currentUser;
2015-07-01 23:14:39 +00:00
},
getUserState: function() {
2015-06-30 19:42:02 +00:00
return userState;
},
login: function(new_user) {
2015-07-01 23:14:39 +00:00
userState.isLoggedIn = true;
service._currentUser = new_user;
2015-06-30 19:42:02 +00:00
},
logout: function() {
2015-07-01 23:14:39 +00:00
$window.user = null;
userState.isLoggedIn = false;
service._currentUser = null;
2016-04-29 06:00:41 +00:00
}
2015-06-30 19:42:02 +00:00
};
2015-07-02 02:49:35 +00:00
return service;
}
]);