import { Injectable } from '@angular/core'; import { HttpClient } from '@angular/common/http'; import { User } from '../models/user'; import { map } from 'rxjs/operators'; @Injectable({ providedIn: 'root' }) export class AuthService { private url = 'https://www.googleapis.com/identitytoolkit/v3/relyingparty'; private apikey = 'AIzaSyDanKihOdPD7MgARSec7_B7NtMcSSJbu4Q'; userToken: string; // Crear nuevo user // https://www.googleapis.com/identitytoolkit/v3/relyingparty/signupNewUser?key=[API_KEY] // Login // https://www.googleapis.com/identitytoolkit/v3/relyingparty/verifyPassword?key=[API_KEY] constructor( private http: HttpClient ) { this.leerToken(); } logout() { localStorage.removeItem('token'); } login( user: User ) { console.log(user); const authData = { email: user.email, password: user.password, returnSecureToken: true }; return this.http.post( `${ this.url }/verifyPassword?key=${ this.apikey }`, authData ).pipe( map( resp => { this.guardarToken( resp['idToken'] ); return resp; }) ); } nuevouser( user: User ) { const authData = { ...user, returnSecureToken: true }; return this.http.post( `${ this.url }/signupNewUser?key=${ this.apikey }`, authData ).pipe( map( resp => { this.guardarToken( resp['idToken'] ); return resp; }) ); } private guardarToken( idToken: string ) { this.userToken = idToken; localStorage.setItem('token', idToken); let hoy = new Date(); hoy.setSeconds( 3600 ); localStorage.setItem('expira', hoy.getTime().toString() ); } leerToken() { if ( localStorage.getItem('token') ) { this.userToken = localStorage.getItem('token'); } else { this.userToken = ''; } return this.userToken; } estaAutenticado(): boolean { if ( this.userToken.length < 2 ) { return false; } const expira = Number(localStorage.getItem('expira')); const expiraDate = new Date(); expiraDate.setTime(expira); if ( expiraDate > new Date() ) { return true; } else { return false; } } }