import { Injectable } from '@angular/core'; import { HttpClient, HttpHeaders } from '@angular/common/http'; import { Observable, tap } from 'rxjs'; import { environment } from '../../../../environments/environment.development'; import { Router } from '@angular/router'; @Injectable({ providedIn: 'root', }) export class AuthService { private apiUrl = environment.API_DOMAIN + '/login'; constructor(private http: HttpClient, private router: Router) {} login(username: string, password: string): Observable<any> { const headers = new HttpHeaders({ 'Content-Type': 'application/json' }); const body = { username, password }; return this.http.post<any>(this.apiUrl, body, { headers }).pipe( tap((response) => { localStorage.setItem('token', response.responseData.token); localStorage.setItem('expirationTime', response.responseData.expirationTime); localStorage.setItem('role', response.responseData.role); }) ); } logout(): void { localStorage.removeItem('token'); localStorage.removeItem('expirationTime'); localStorage.removeItem('role'); this.router.navigate(['/login']); } isLoggedIn(): boolean { const token = localStorage.getItem('token'); if (token) { return true; } return false; } loginSussces(): void { this.getUserRole() === "admin" ? this.router.navigate(['/admin']) : this.router.navigate(['/home']); } getUserRole(): string | null { return localStorage.getItem('role'); } }