// src/app/auth/role-guard.service.ts import { Injectable } from '@angular/core'; import { Router, CanActivate, ActivatedRouteSnapshot } from '@angular/router'; import { AuthService } from './auth.service'; @Injectable() export class RoleGuardService implements CanActivate { constructor(public auth: AuthService, public router: Router) {} canActivate(route: ActivatedRouteSnapshot): boolean { // this will be passed from the route config // on the data property const expectedRole:string[] = route.data.expectedRole; var rolematch: boolean = false; var rolearray = this.auth.getRoles(); for (let x in expectedRole) { var r: string = expectedRole[x].toString(); if (rolearray.find(s=>s===r)) { rolematch = true; break; } } if ( !this.auth.isLoggedIn() || !rolematch ) { this.router.navigate(['dashboard']); return false; } return true; } }