Skip to content

Instantly share code, notes, and snippets.

@Epotignano
Created September 17, 2015 17:50
Show Gist options
  • Save Epotignano/d81fdc6e35064f92cf86 to your computer and use it in GitHub Desktop.
Save Epotignano/d81fdc6e35064f92cf86 to your computer and use it in GitHub Desktop.
/**
* Created by emiliano on 04/02/15.
*/
angular.module('exampleApp.auth')
.service('AuthTokenService', function AuthTokenService(gettext, $state, $localStorage, $firebaseAuth, $firebaseObject, $q, $window, fireRef, UserService) {
var service = this;
var ref = new Firebase(fireRef);
var auth = $firebaseAuth(ref);
var authKey = 'auth-token';
var userKey = 'uid';
service.auth = auth;
service.setToken = function(token) {
$localStorage[authKey] = token;
};
service.getToken = function() {
return $localStorage[authKey];
};
service.setId= function(uid) {
$localStorage[userKey] = uid;
};
service.isAuthorized = function() {
return !!auth.$getAuth();
};
service.logOut = function() {
auth.$unauth();
};
service.login = function(userCredentials) {
var authPromise = $q.defer();
auth.$authWithPassword(userCredentials)
.then(function(authData) {
service.setToken(authData.token);
service.setId(authData.uid);
UserService.getUserData().then(function(userData) {
if(!userData){
AuthTokenService.logOut();
authPromise.reject('Unauthorized');
}
else{
$localStorage.forcePassword = authData.password.isTemporaryPassword;
$localStorage.forceRegister = !userData.registered;
authPromise.resolve('success');
}
});
})
.catch(function(error) {
authPromise.reject(error);
});
return authPromise.promise;
};
service.changePassword = function(userCredentials){
var passwordPromise = $q.defer();
auth.$changePassword(userCredentials).
then(function(){
passwordPromise.resolve('success');
})
.catch(function(error){
passwordPromise.reject(error);
});
return passwordPromise.promise;
};
service.reset = function(userCredentials) {
var authPromise = $q.defer();
auth.$resetPassword(userCredentials)
.then(function() {
authPromise.resolve('success');
})
.catch(function(error) {
authPromise.reject(error);
});
return authPromise.promise;
};
service.optin = function(optinData) {
var optinPromise = $q.defer();
var modMail = optinData.email.replace(/\./g, '');
var optinRef = new Firebase(fireRef + 'optins/' + modMail);
var optinObj = $firebaseObject(optinRef);
optinObj.email = optinData.email;
optinObj.culture = optinData.culture;
optinObj.$save().then(function(){
optinPromise.resolve('success');
}).catch(function(error){
optinPromise.reject(error);
});
return optinPromise.promise;
};
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment