Created
September 17, 2015 17:50
-
-
Save Epotignano/d81fdc6e35064f92cf86 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* 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