diff --git a/ng-ttc-frontend/src/app/services/role.guard.ts.ts b/ng-ttc-frontend/src/app/services/role.guard.ts.ts new file mode 100644 index 0000000..21b43fa --- /dev/null +++ b/ng-ttc-frontend/src/app/services/role.guard.ts.ts @@ -0,0 +1,27 @@ +import { Injectable } from '@angular/core'; +import { ActivatedRouteSnapshot, RouterStateSnapshot, Router } from '@angular/router'; + + +@Injectable({ + providedIn: 'root', +}) +export class RoleGuard { + constructor(private router: Router) { } + + canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean { + const denyRole = route.data?.['denyRole']; + const usrrol = localStorage.getItem('usrrol'); + + if (denyRole && usrrol === denyRole) { + // blocked: navigate away (adjust target as needed) + this.router.navigate(['/']); + return false; + } + + return true; + } + + canActivateChild(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean { + return this.canActivate(route, state); + } +}