import { Injectable } from '@angular/core'; import { HttpClient } from '@angular/common/http'; import { Observable, of } from 'rxjs'; import { map } from 'rxjs/operators'; import { Login, LoginToken, ChangePassword } from './model'; import { environment } from '../../../environments/environment'; @Injectable() export class LoginService { private API_PATH: string = environment.apiUrl + '/'; constructor(private http: HttpClient) { } login(login: Login): Observable<LoginToken> { return this.http.post<{data: LoginToken}>(this.API_PATH + 'login', login).pipe( map(res => res.data) ); } resetConnectionToLocalstorage() { localStorage.removeItem('email'); localStorage.removeItem('token'); } saveConnectionToLocalstorage(loginToken: LoginToken) { localStorage.setItem('email', loginToken.email); localStorage.setItem('token', loginToken.token); } getConnectionFromLocalstorage() { let loginToken: LoginToken = null; const email = localStorage.getItem('email'); const token = localStorage.getItem('token'); if (email && token) { loginToken = { email, token }; } return of(loginToken); } register(login: Login) { return this.http.post(this.API_PATH + 'register', login); } forgotPassword(email: string) { return this.http.post(this.API_PATH + 'new-password', email); } changePassword(email: string, changePassword: ChangePassword) { return this.http.post(this.API_PATH + 'change-password', {...changePassword, email}); } }