Auth.Service.ts 1.48 KB
Newer Older
tinhbe's avatar
tinhbe committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
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');
  }
}