$ git clone git://github.com/joshdmiller/ng-boilerplate $ cd ng-boilerplate $ sudo npm -g install grunt-cli karma bower $ npm install $ bower install $ grunt watch
angular.module('Auth', [ 'firebase' ]) .service('AuthService', [ '$rootScope','$firebase', '$firebaseAuth', '$location', '$q', function AuthService( $rootScope, $firebase, $firebaseAuth, $location, $q ){ var firebaseObj = new Firebase('https://your-firebase-app.com/'); var userStorageKey = 'authUser'; var authUser = $.jStorage.get(userStorageKey) || { status:false, data: false }; return { createUserByEmail: function(email, password){ var deferred = $q.defer(); firebaseObj.createUser({ email : email, password : password }, function(error) { if (error === null) { deferred.resolve({ status: true }); } else { deferred.resolve({ status: false, error: error }); } }); return deferred.promise; }, signInUserByEmail: function(email, password){ var deferred = $q.defer(); firebaseObj.authWithPassword({ email : email, password : password }, function(error, data) { if (error === null) { // user authenticated with Firebase authUser = { status: true, data: data }; deferred.resolve(authUser); $.jStorage.set(userStorageKey, authUser); } else { deferred.resolve({ status: false, error: error }); } }); return deferred.promise; }, changeUserPass: function(email, password, newPassword){ firebaseObj.changePassword({ email : email, oldPassword : password, newPassword : newPassword }, function(error) { if (error === null) { console.log("Password changed successfully"); } else { console.log("Error changing password:", error); } }); }, resetAndSendPassword: function(email){ firebaseObj.resetPassword({ email : email }, function(error) { if (error === null) { console.log("Password reset email sent successfully"); } else { console.log("Error sending password reset email:", error); } }); }, deleteUser: function(email, password){ firebaseObj.removeUser({ email : email, password : password }, function(error) { if (error === null) { console.log("User removed successfully"); } else { console.log("Error removing user:", error); } }); }, getUserState:function(){ //console.info(Date(authUser.data.expires)); console.info(authUser); if(authUser.data){ var data = firebaseObj.getAuth(); authUser = { status: data ? true : false, data: (data == null) ? {} : data }; $.jStorage.set(userStorageKey, authUser); } return authUser.status; }, logOut: function(){ $firebaseAuth(firebaseObj).$unauth(); $.jStorage.deleteKey(userStorageKey); $rootScope.$userState = this.getUserState(); }, getAuthUser: function(){ return authUser.data; } }; }]) .directive('signInForm', [ '$rootScope', 'AuthService', '$location', function( $rootScope, AuthService, $location){ return{ restrict: 'A', templateUrl: 'auth/templates/sign-in.tpl.html', link: function(scope, element, attrs){ scope.userEmail = ''; scope.userPassword = ''; scope.userState = AuthService.getUserState(); scope.signInUserByEmail = function(){ AuthService.signInUserByEmail(scope.userEmail, scope.userPassword) .then(function(response){ scope.userState = AuthService.getUserState(); if(scope.userState) { alert('You are logged in'); $location.path('profile'); } else{ alert('Incorrect user email or password'); } }); }; } }; }]) .directive('signUpForm', [ '$rootScope', 'AuthService', '$location', function( $rootScope, AuthService, $location){ return{ restrict: 'A', templateUrl: 'auth/templates/sign-up.tpl.html', link: function(scope, element, attrs){ scope.userEmail = ''; scope.userPassword = ''; scope.facebookEnabled = false; scope.userState = AuthService.getUserState(); scope.isRegistered = false; scope.createUser = function(){ AuthService.createUserByEmail(scope.userEmail, scope.userPassword) .then(function(response){ if(response.status){ alert("Congratulations! You've successfully signed up. You can authorize"); scope.isRegistered = true; } else{ alert(response.error); } }); }; } }; }]) ;
Source: https://habr.com/ru/post/246829/
All Articles