Skip to content

Instantly share code, notes, and snippets.

@battlecow
Created June 22, 2014 23:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save battlecow/8ccdd4501932b2b723ac to your computer and use it in GitHub Desktop.
Save battlecow/8ccdd4501932b2b723ac to your computer and use it in GitHub Desktop.
angular.module('security.service', ['resources.OAuth', 'resources.user', 'resources.calendars']).factory('Security', ['$q', 'OAuth', 'User', 'localStorageService', 'Calendar', function($q, OAuth, User, localStorageService, Calendar) {
var restoreSession = function() {
var currentUser = localStorageService.get('user');
if (currentUser) {
Calendar.init(currentUser);
var user = User.setCurrentUser(currentUser);
return user;
} else {
return null;
}
};
var createSession = function() {
Calendar.init(User.currentUser);
localStorageService.set('user', User.currentUser);
};
var destroySession = function() {
OAuth.service().then(function(_oauth) {
_oauth.clearCache('facebook');
});
localStorageService.clearAll();
User.destroyUser();
};
var startFBLogin = function() {
var deferred = $q.defer();
OAuth.service().then(function(_oauth) {
_oauth.popup('facebook', {
cache: true
}, function(error, result) {
if (error) {
deferred.reject(error);
}
result.get("/me").done(function(res) {
deferred.resolve(res);
});
});
});
return deferred.promise;
}
var fbLogin = function(successCb, errorCb) {
var loginUser = startFBLogin();
return loginUser.then(function(result) {
User.setCurrentUser(result);
createSession();
successCb(result);
}, errorCb);
};
var service = {
fbLogin: fbLogin,
createSession: createSession,
destroySession: destroySession,
restoreSession: restoreSession,
requestCurrentUser: function() {
if (service.isAuthenticated()) {
return $q.when(User.currentUser);
} else {
return $q.when(restoreSession());
}
},
isAuthenticated: function() {
return !!User.currentUser;
}
};
return service;
}]);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment