28 lines
806 B
TypeScript
28 lines
806 B
TypeScript
import { inject, PLATFORM_ID } from '@angular/core';
|
|
import { CanActivateFn, Router } from '@angular/router';
|
|
import { isPlatformBrowser } from '@angular/common';
|
|
import { AuthService } from '../services/auth.service';
|
|
|
|
export const sysadminOrFinanceiroGuard: CanActivateFn = () => {
|
|
const router = inject(Router);
|
|
const platformId = inject(PLATFORM_ID);
|
|
const authService = inject(AuthService);
|
|
|
|
if (!isPlatformBrowser(platformId)) {
|
|
// Em SSR não há storage do usuário para validar sessão/perfil.
|
|
return true;
|
|
}
|
|
|
|
const token = authService.token;
|
|
if (!token) {
|
|
return router.parseUrl('/login');
|
|
}
|
|
|
|
const hasAccess = authService.hasRole('sysadmin') || authService.hasRole('financeiro');
|
|
if (!hasAccess) {
|
|
return router.parseUrl('/dashboard');
|
|
}
|
|
|
|
return true;
|
|
};
|