diff --git a/src/app/services/localstorage.service.ts b/src/app/services/localstorage.service.ts index fd0f3a8..f7d41ef 100644 --- a/src/app/services/localstorage.service.ts +++ b/src/app/services/localstorage.service.ts @@ -1,19 +1,32 @@ import { Injectable } from '@angular/core'; +import { Router } from '@angular/router'; @Injectable({ providedIn: 'root', }) export class LocalStorageService { private readonly AUTH_TOKEN_KEY = 'auth_token'; - private readonly IS_ADMIN_KEY = 'isAdmin'; + private readonly USERNAME_KEY = 'username'; + private readonly IS_ADMIN_KEY = 'is_admin'; - constructor() {} + constructor(private router: Router) {} setToken(token: string): void { localStorage.setItem(this.AUTH_TOKEN_KEY, token); } getToken(): string | null { + // Check if token is expired + const token = localStorage.getItem(this.AUTH_TOKEN_KEY); + if (token) { + const payload = JSON.parse(atob(token.split('.')[1])); + const expirationDate = new Date(payload.exp * 1000); + if (expirationDate < new Date()) { + this.removeToken(); // Remove expired token + this.router.navigate(['/login']); + return null; + } + } return localStorage.getItem(this.AUTH_TOKEN_KEY); } @@ -21,6 +34,18 @@ export class LocalStorageService { localStorage.removeItem(this.AUTH_TOKEN_KEY); } + setUsername(username: string): void { + localStorage.setItem(this.USERNAME_KEY, username); + } + + getUsername(): string | null{ + return localStorage.getItem(this.USERNAME_KEY); + } + + removeUsername(): void { + localStorage.removeItem(this.USERNAME_KEY); + } + setIsAdmin(isAdmin: boolean): void { localStorage.setItem(this.IS_ADMIN_KEY, isAdmin.toString()); }