import { HttpClient } from '@angular/common/http'; import {Injectable} from '@angular/core'; import {Observable, of} from 'rxjs'; import {UserAuthRequest} from '../models/user-auth-request'; @Injectable({ providedIn: 'root' }) export class AuthServiceService { readonly AUTH_URL: string = 'http://localhost:8080/pa165/auth/login'; readonly JWT: string = "JWT"; authenticated: boolean = false; leagueManager: boolean = false; teamManager: boolean = false; constructor(private http: HttpClient) { } authenticate(userAuthRequest: UserAuthRequest) { this.http.post( this.AUTH_URL, userAuthRequest, {responseType : 'text'} ) .subscribe((response: string) => this.handleAuthResponse(response)); } logOut(): Observable<boolean> { localStorage.removeItem(this.JWT) this.authenticated = false; this.teamManager = false; this.leagueManager = false; return of(true); } isAuthenticated(): Observable<boolean> { this.authenticated = localStorage.getItem(this.JWT) !== null; return of(this.authenticated); } isLeagueManager(): Observable<boolean> { return of(this.leagueManager); } isTeamManager(): Observable<boolean> { return of(this.teamManager); } handleAuthResponse(response: string) : void { console.log("aaaaaaaaaaaaaaa"); let parts = response.split(" "); let token = parts[1]; localStorage.setItem(this.JWT, token); } getBearerHeader(): string { let token = localStorage.getItem(this.JWT); return token !== null ? `Bearer ${token}` : ""; } }