Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import { Injectable } from '@angular/core';
- import { AngularFireAuth } from 'angularfire2/auth';
- import * as firebase from 'firebase';
- import { Observable } from 'rxjs/Observable';
- import { Http } from '@angular/http';
- import { Settings } from '../globals/settings.global';
- import { User } from '../models/user.model';
- import { GlobalService } from './global.service';
- import { Router } from '@angular/router';
- @Injectable()
- export class AuthService {
- private firebaseUser: Observable<firebase.User>;
- private firebaseUserDetails: firebase.User = null;
- constructor(public router: Router, public http: Http, public _firebaseAuth: AngularFireAuth, public globalService: GlobalService) {
- this.firebaseUser = _firebaseAuth.authState;
- this.firebaseUser.subscribe(
- (user) => {
- if (user) {
- this.firebaseUserDetails = user;
- this.setTokenRoles(user);
- }
- else {
- this.firebaseUserDetails = null;
- }
- }
- );
- }
- public createUserWithEmailAndPassword(email: string, password: string): Promise<any> {
- return this._firebaseAuth.auth.createUserWithEmailAndPassword(email, password);
- }
- public signInRegular(email, password) {
- const credential = firebase.auth.EmailAuthProvider.credential(email, password);
- return this._firebaseAuth.auth.signInWithEmailAndPassword(email, password)
- .then((user) => {
- return this.setTokenRoles(user);
- });
- }
- public signInWithFacebook() {
- return this._firebaseAuth.auth.signInWithPopup(new firebase.auth.FacebookAuthProvider())
- .then((user) => {
- return this.setTokenRoles(user);
- });
- }
- public signInWithGoogle() {
- return this._firebaseAuth.auth.signInWithPopup(new firebase.auth.GoogleAuthProvider())
- .then((user) => {
- return this.setTokenRoles(user);
- });
- }
- public isLoggedIn(): Promise<boolean> {
- if (this.firebaseUserDetails == null) {
- return new Promise((resolve, reject) => {
- let test = "";
- this._firebaseAuth.auth.onAuthStateChanged((user) => {
- if (user) {
- resolve(true);
- } else {
- resolve(false);
- }
- });
- });
- } else {
- return new Promise((resolve, reject) => {
- resolve(true);
- });
- }
- }
- public logout() {
- return this._firebaseAuth.auth.signOut()
- .then((res) => {
- this.firebaseUser = null;
- this.firebaseUserDetails = null;
- this.globalService.currentUser = new User({});
- localStorage.removeItem("token");
- });
- }
- public setTokenRoles(user) {
- return this._firebaseAuth.auth.currentUser.getIdToken().then((token) => {
- let body = {
- token: token
- }
- return this.http.post(Settings.AuthController.setTokenRoles, body)
- .toPromise()
- .then((response) => {
- if (response.status === 200 && response.json() && response.json().id) {
- this.globalService.currentUser = new User(response.json());
- return this._firebaseAuth.auth.currentUser.getIdToken(true).then((token) => {
- localStorage.setItem("token", token);
- return user;
- });
- }
- }).catch(() => {
- this.logout();
- });
- });
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement