auth.service.ts 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. import { Injectable } from '@angular/core';
  2. import { HttpClient } from '@angular/common/http';
  3. import { User } from '../models/user';
  4. import { map } from 'rxjs/operators';
  5. @Injectable({
  6. providedIn: 'root'
  7. })
  8. export class AuthService {
  9. private url = 'https://www.googleapis.com/identitytoolkit/v3/relyingparty';
  10. private apikey = 'AIzaSyDanKihOdPD7MgARSec7_B7NtMcSSJbu4Q';
  11. userToken: string;
  12. // Crear nuevo user
  13. // https://www.googleapis.com/identitytoolkit/v3/relyingparty/signupNewUser?key=[API_KEY]
  14. // Login
  15. // https://www.googleapis.com/identitytoolkit/v3/relyingparty/verifyPassword?key=[API_KEY]
  16. constructor( private http: HttpClient ) {
  17. this.leerToken();
  18. }
  19. logout() {
  20. localStorage.removeItem('token');
  21. }
  22. login( user: User ) {
  23. console.log(user);
  24. const authData = {
  25. email: user.email,
  26. password: user.password,
  27. returnSecureToken: true
  28. };
  29. return this.http.post(
  30. `${ this.url }/verifyPassword?key=${ this.apikey }`,
  31. authData
  32. ).pipe(
  33. map( resp => {
  34. this.guardarToken( resp['idToken'] );
  35. return resp;
  36. })
  37. );
  38. }
  39. nuevouser( user: User ) {
  40. const authData = {
  41. ...user,
  42. returnSecureToken: true
  43. };
  44. return this.http.post(
  45. `${ this.url }/signupNewUser?key=${ this.apikey }`,
  46. authData
  47. ).pipe(
  48. map( resp => {
  49. this.guardarToken( resp['idToken'] );
  50. return resp;
  51. })
  52. );
  53. }
  54. private guardarToken( idToken: string ) {
  55. this.userToken = idToken;
  56. localStorage.setItem('token', idToken);
  57. let hoy = new Date();
  58. hoy.setSeconds( 3600 );
  59. localStorage.setItem('expira', hoy.getTime().toString() );
  60. }
  61. leerToken() {
  62. if ( localStorage.getItem('token') ) {
  63. this.userToken = localStorage.getItem('token');
  64. } else {
  65. this.userToken = '';
  66. }
  67. return this.userToken;
  68. }
  69. estaAutenticado(): boolean {
  70. if ( this.userToken.length < 2 ) {
  71. return false;
  72. }
  73. const expira = Number(localStorage.getItem('expira'));
  74. const expiraDate = new Date();
  75. expiraDate.setTime(expira);
  76. if ( expiraDate > new Date() ) {
  77. return true;
  78. } else {
  79. return false;
  80. }
  81. }
  82. }