diff --git a/src/app/account/account.service.ts b/src/app/account/account.service.ts index 44fede5..eb17991 100644 --- a/src/app/account/account.service.ts +++ b/src/app/account/account.service.ts @@ -1,17 +1,38 @@ 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; - userName: string = null; + constructor(private httpClient: HttpClient) { + this.userSubject = new BehaviorSubject(JSON.parse(localStorage.getItem('user'))); + this.user = this.userSubject.asObservable(); + } - constructor(private httpClient: HttpClient) { } + public get userValue() { + return this.userSubject.value; + } login(username, password) { - return this.httpClient.post + 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); } }