admin.guard.ts 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import { Injectable } from '@angular/core';
  2. import {
  3. ActivatedRouteSnapshot,
  4. CanActivate,
  5. Router,
  6. RouterStateSnapshot,
  7. UrlTree,
  8. } from '@angular/router';
  9. import { USERInterface } from '../interfaces/user-interface';
  10. import { ENCService } from '../services/enc/enc.service';
  11. import { IAMService } from '../services/iam/iam.service';
  12. import * as sodium from 'libsodium-wrappers';
  13. @Injectable({
  14. providedIn: 'root',
  15. })
  16. export class AdminGuard implements CanActivate {
  17. public aux_test: any;
  18. constructor( private router: Router, private _encService:ENCService) {}
  19. async canActivate(
  20. route: ActivatedRouteSnapshot,
  21. state: RouterStateSnapshot,
  22. ):Promise<boolean> {
  23. let rfc_local = localStorage.getItem('RFCEMPRESA')!;
  24. let user_local = localStorage.getItem('TIMUSERENC')!;
  25. this.aux_test = setInterval(() => {
  26. let jwt_local = localStorage.getItem('jwt');
  27. if (jwt_local !== null ) {
  28. localStorage.setItem('RFCEMPRESA', rfc_local);
  29. localStorage.setItem('TIMUSERENC', user_local);
  30. }
  31. }, 1000);
  32. let usuario:USERInterface = JSON.parse(localStorage.getItem('TIMUSERENC')!);
  33. const sleep = (ms:number) => new Promise(resolve => setTimeout(resolve, ms))
  34. await sleep(600);
  35. if (usuario != null) {
  36. let perfil_des = this._encService.desencriptar(usuario.PERFIL);
  37. if(perfil_des === "1"){
  38. return true;
  39. }else{
  40. if(window.location.pathname == "/admin/mesmav"){
  41. this.router.navigate(['/mesmav']);
  42. }else{
  43. this.router.navigate(['/mesmpr']);
  44. }
  45. return false;
  46. }
  47. } else {
  48. this.router.navigate(['/iam']);
  49. return false;
  50. }
  51. }
  52. }