From 410d3aa6222e1fa2115901e3cbc932de76bc146a Mon Sep 17 00:00:00 2001 From: Daniel Lukats Date: Tue, 21 Jul 2020 15:19:49 +0200 Subject: [PATCH] added login and register methods to AccountService --- src/app/account/account.service.ts | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) 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); } }