import { Injectable } from '@angular/core'; import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http'; import { BehaviorSubject, Observable } from 'rxjs'; import { map } from 'rxjs/operators'; import { User } from '../_models/user'; @Injectable({ providedIn: 'root' }) export class AuthenticationService { private currentUserSubject: BehaviorSubject; public currentUser: Observable; private baseUrl = 'http://localhost:8080/'; private captchaUrl = this.baseUrl+'capchaverify'; constructor(private http: HttpClient) { this.currentUserSubject = new BehaviorSubject(JSON.parse(localStorage.getItem('currentUser'))); this.currentUser = this.currentUserSubject.asObservable(); } httpOptions = { headers: new HttpHeaders({ 'Content-Type':'application/json' }) } public get currentUserValue(): User { return this.currentUserSubject.value; } login(email: string, password: string) { return this.http.post(`auth/login`, { email, password }) // .subscribe(user => { .pipe(map(user => { if (user && user.token) { // store user details in local storage to keep user logged in localStorage.setItem('currentUser', JSON.stringify(user.result)); sessionStorage.setItem('roleName',user.roleName); this.currentUserSubject.next(user); } return user; })); } logout() { // remove user data from local storage for log out localStorage.removeItem('currentUser'); this.currentUserSubject.next(null); } send(data): Observable { return this.http.post(this.captchaUrl,data,this.httpOptions); } }