import { Injectable } from '@angular/core'; import { HttpClient } from '@angular/common/http'; import { BehaviorSubject, Observable } from 'rxjs'; import { map } from 'rxjs/operators'; import { environment } from '../../environments/environment'; import { User } from './user'; @Injectable({ providedIn: 'root' }) export class AccountService { private userSubject: BehaviorSubject; public user: Observable; constructor(private httpClient: HttpClient) { this.userSubject = new BehaviorSubject(JSON.parse(localStorage.getItem('user'))); this.user = this.userSubject.asObservable(); } public get userValue() { return this.userSubject.value; } login(username, password) { return this.httpClient.post(environment.apiUrl + '/fake_login', { username, password }) .pipe((map(user => { localStorage.setItem('user', JSON.stringify(user)); this.userSubject.next(user); return user; }))) } register(user) { return this.httpClient.post(environment.apiUrl + '/fake_registration', user); } }