Advertisement
Guest User

Untitled

a guest
Aug 29th, 2018
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.33 KB | None | 0 0
  1. import { Injectable } from '@angular/core';
  2. import { AngularFireAuth } from 'angularfire2/auth';
  3. import * as firebase from 'firebase';
  4. import { Observable } from 'rxjs/Observable';
  5. import { Http } from '@angular/http';
  6. import { Settings } from '../globals/settings.global';
  7. import { User } from '../models/user.model';
  8. import { GlobalService } from './global.service';
  9. import { Router } from '@angular/router';
  10.  
  11. @Injectable()
  12. export class AuthService {
  13. private firebaseUser: Observable<firebase.User>;
  14. private firebaseUserDetails: firebase.User = null;
  15.  
  16. constructor(public router: Router, public http: Http, public _firebaseAuth: AngularFireAuth, public globalService: GlobalService) {
  17. this.firebaseUser = _firebaseAuth.authState;
  18.  
  19. this.firebaseUser.subscribe(
  20. (user) => {
  21. if (user) {
  22. this.firebaseUserDetails = user;
  23. this.setTokenRoles(user);
  24. }
  25. else {
  26. this.firebaseUserDetails = null;
  27. }
  28. }
  29. );
  30. }
  31.  
  32. public createUserWithEmailAndPassword(email: string, password: string): Promise<any> {
  33. return this._firebaseAuth.auth.createUserWithEmailAndPassword(email, password);
  34. }
  35.  
  36. public signInRegular(email, password) {
  37. const credential = firebase.auth.EmailAuthProvider.credential(email, password);
  38.  
  39. return this._firebaseAuth.auth.signInWithEmailAndPassword(email, password)
  40. .then((user) => {
  41. return this.setTokenRoles(user);
  42. });
  43. }
  44.  
  45. public signInWithFacebook() {
  46. return this._firebaseAuth.auth.signInWithPopup(new firebase.auth.FacebookAuthProvider())
  47. .then((user) => {
  48. return this.setTokenRoles(user);
  49. });
  50. }
  51.  
  52. public signInWithGoogle() {
  53. return this._firebaseAuth.auth.signInWithPopup(new firebase.auth.GoogleAuthProvider())
  54. .then((user) => {
  55. return this.setTokenRoles(user);
  56. });
  57. }
  58.  
  59. public isLoggedIn(): Promise<boolean> {
  60. if (this.firebaseUserDetails == null) {
  61. return new Promise((resolve, reject) => {
  62. let test = "";
  63.  
  64. this._firebaseAuth.auth.onAuthStateChanged((user) => {
  65. if (user) {
  66. resolve(true);
  67. } else {
  68. resolve(false);
  69. }
  70. });
  71. });
  72. } else {
  73. return new Promise((resolve, reject) => {
  74. resolve(true);
  75. });
  76. }
  77. }
  78.  
  79. public logout() {
  80. return this._firebaseAuth.auth.signOut()
  81. .then((res) => {
  82. this.firebaseUser = null;
  83. this.firebaseUserDetails = null;
  84. this.globalService.currentUser = new User({});
  85. localStorage.removeItem("token");
  86. });
  87. }
  88.  
  89. public setTokenRoles(user) {
  90. return this._firebaseAuth.auth.currentUser.getIdToken().then((token) => {
  91. let body = {
  92. token: token
  93. }
  94.  
  95. return this.http.post(Settings.AuthController.setTokenRoles, body)
  96. .toPromise()
  97. .then((response) => {
  98. if (response.status === 200 && response.json() && response.json().id) {
  99. this.globalService.currentUser = new User(response.json());
  100.  
  101. return this._firebaseAuth.auth.currentUser.getIdToken(true).then((token) => {
  102. localStorage.setItem("token", token);
  103. return user;
  104. });
  105. }
  106. }).catch(() => {
  107. this.logout();
  108. });
  109. });
  110. }
  111. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement