role.guard.ts 1.1 KB

123456789101112131415161718192021222324252627282930313233
  1. import { Injectable } from '@angular/core';
  2. import { ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree, Router } from '@angular/router';
  3. import { Observable } from 'rxjs';
  4. import { AuthService } from '../services/auth.service';
  5. import { LoginService } from '../../shared/api/endpoints/services';
  6. @Injectable({
  7. providedIn: 'root'
  8. })
  9. export class RoleGuard {
  10. constructor(
  11. private authService: AuthService,
  12. private loginService: LoginService,
  13. private router: Router,
  14. ) {}
  15. canActivate(
  16. routeSnapshot: ActivatedRouteSnapshot,
  17. state: RouterStateSnapshot
  18. ): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {
  19. const expectedRole: string[] = routeSnapshot.data.expectedRole;
  20. let user = this.authService.getUser();
  21. let userInfo = user.userInfo;
  22. if (expectedRole.includes(userInfo?.rightsId.toString()) || expectedRole.includes(user.userCookie.rightsID.toString())) {
  23. console.log('You have enough rights!');
  24. return true;
  25. }
  26. console.log('You are not allowed to be here!');
  27. this.router.navigate(['']);
  28. return false;
  29. }
  30. }