Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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 '@app/_models';
- @Injectable({providedIn: 'root'})
- export class AuthenticationService {
- public currentUser: Observable<User>;
- private currentUserSubject: BehaviorSubject<User>;
- constructor(private http: HttpClient) {
- if (localStorage.getItem('currentUser')) {
- this.currentUserSubject = new BehaviorSubject<User>(JSON.parse(localStorage.getItem('currentUser')));
- } else {
- this.currentUserSubject = new BehaviorSubject<User>(null);
- }
- this.currentUser = this.currentUserSubject.asObservable();
- }
- public get currentUserValue(): User {
- return this.currentUserSubject.value;
- }
- login(mail: string, password: string) {
- return this.http.post<any>(`${environment.apiUrl}/auth/login`, {mail, password})
- .pipe(map(user => {
- // login successful if there's a jwt token in the response
- if (user && user.jwtToken) {
- // store user details and jwt token in local storage to keep user logged in between page refreshes
- localStorage.setItem('currentUser', JSON.stringify(user));
- this.currentUserSubject.next(user);
- this.currentUserSubject = new BehaviorSubject<User>(JSON.parse(localStorage.getItem('currentUser')));
- this.currentUser = this.currentUserSubject.asObservable();
- }
- return user;
- }));
- }
- logout() {
- // remove user from local storage to log user out
- localStorage.removeItem('currentUser');
- this.currentUserSubject.next(null);
- location.reload();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement