33 lines
859 B
TypeScript
33 lines
859 B
TypeScript
import { inject } from '@angular/core';
|
|
import { CanActivateFn, Router } from '@angular/router';
|
|
import { jwtDecode } from 'jwt-decode';
|
|
|
|
export const authGuard: CanActivateFn = (route, state) => {
|
|
const router = inject(Router);
|
|
const accessToken = localStorage.getItem('access_token');
|
|
|
|
if (accessToken) {
|
|
try {
|
|
const decodedToken: any = jwtDecode(accessToken);
|
|
const currentTime = Date.now() / 1000;
|
|
|
|
if (decodedToken.exp < currentTime) {
|
|
// Token expired
|
|
localStorage.removeItem('access_token');
|
|
router.navigate(['/login']);
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
} catch (error) {
|
|
// Error decoding token
|
|
localStorage.removeItem('access_token');
|
|
router.navigate(['/login']);
|
|
return false;
|
|
}
|
|
} else {
|
|
router.navigate(['/login']);
|
|
return false;
|
|
}
|
|
};
|