import { Injectable } from "@angular/core"; import { RequestService } from "./request.service"; import { UserStateResponse } from "../models/user-state-request.model"; import { BehaviorSubject, Observable } from "rxjs"; import { LoginRequest, LoginResponse } from "../models/login-request.model copy"; import { Router } from "@angular/router"; @Injectable() export class AuthService { currentState$ = new BehaviorSubject(undefined); constructor( private requestService: RequestService, private router: Router ) { } readUserState(): void { this.requestService.get( 'user/state', {}, (response: UserStateResponse) => { this.currentState$.next(response); }, () => { this.currentState$.next(undefined); } ) } login(body: LoginRequest): LoginResponse|null { let result = null; this.requestService.post( 'auth/login-user', body, (response: LoginResponse) => { result = response; this.readUserState(); } ); return result; } logout(): void { this.requestService.post( 'auth/logout-user', {}, (response: any) => { this.readUserState(); } ); } }