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

68 lines
1.9 KiB
JavaScript
Raw Normal View History

2015-06-30 19:42:02 +00:00
'use strict';
2015-06-30 20:57:20 +00:00
angular.module('users')
2015-07-01 23:14:39 +00:00
.factory('Auth', function($window) {
2015-06-30 19:42:02 +00:00
var userState =
{
isLoggedIn: false
};
2015-07-02 02:49:35 +00:00
var service = {
2015-06-30 19:42:02 +00:00
currentUser: null,
// Note: we can't make the User a dependency of Auth
// because that would create a circular dependency
// Auth <- $http <- $resource <- LoopBackResource <- User <- Auth
ensureHasCurrentUser: function(User) {
2015-07-02 02:49:35 +00:00
if (service.currentUser && service.currentUser.displayName) {
2015-07-01 23:14:39 +00:00
console.log('Using local current user.');
2015-07-02 02:49:35 +00:00
console.log(service.currentUser);
return service.currentUser;
2015-07-01 23:14:39 +00:00
}
else if ($window.user){
console.log('Using cached current user.');
console.log($window.user);
2015-07-02 02:49:35 +00:00
service.currentUser = $window.user;
return service.currentUser;
2015-07-01 23:14:39 +00:00
}
else{
2015-06-30 19:42:02 +00:00
console.log('Fetching current user from the server.');
2015-07-01 23:14:39 +00:00
User.getCurrent().then(function(user) {
2015-06-30 19:42:02 +00:00
// success
2015-07-02 02:49:35 +00:00
service.currentUser = user;
2015-06-30 19:42:02 +00:00
userState.isLoggedIn = true;
2015-07-02 02:49:35 +00:00
$window.user = service.currentUser;
return service.currentUser;
2015-06-30 19:42:02 +00:00
},
function(response) {
userState.isLoggedIn = false;
2015-07-02 02:49:35 +00:00
service.currentUser = null;
2015-07-01 23:14:39 +00:00
$window.user = null;
2015-06-30 19:42:02 +00:00
console.log('User.getCurrent() err', response);
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() {
2015-07-02 02:49:35 +00:00
return !!service.currentUser;
2015-07-01 23:14:39 +00:00
},
getUserState: function() {
2015-06-30 19:42:02 +00:00
return userState;
},
2015-07-01 23:14:39 +00:00
login: function() {
userState.isLoggedIn = true;
2015-06-30 19:42:02 +00:00
},
logout: function() {
2015-07-01 23:14:39 +00:00
$window.user = null;
userState.isLoggedIn = false;
2015-07-02 02:49:35 +00:00
service.currentUser = null;
service.ensureHasCurrentUser(null);
2015-06-30 19:42:02 +00:00
},
};
2015-07-02 02:49:35 +00:00
return service;
2015-06-30 19:42:02 +00:00
});