user.guard.ts 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. import { Injectable } from '@angular/core';
  2. import {
  3. ActivatedRouteSnapshot,
  4. CanActivate,
  5. Router,
  6. RouterStateSnapshot,
  7. UrlTree,
  8. } from '@angular/router';
  9. import { Observable } from 'rxjs';
  10. import { USERInterface } from '../interfaces/user-interface';
  11. import { ENCService } from '../services/enc/enc.service';
  12. import { IAMService } from '../services/iam/iam.service';
  13. import * as _sodium from 'libsodium-wrappers';
  14. import { Logger } from 'html2canvas/dist/types/core/logger';
  15. @Injectable({
  16. providedIn: 'root',
  17. })
  18. export class UserGuard implements CanActivate {
  19. empresas_arr: any[] = [];
  20. constructor(
  21. private _iamService: IAMService,
  22. private router: Router,
  23. private _encService: ENCService
  24. ) {
  25. this.empresas_arr = [
  26. {
  27. RFC: 'TME700618RC7',
  28. NOMBRE: 'TIMKEN',
  29. },
  30. ];
  31. }
  32. async canActivate(
  33. route: ActivatedRouteSnapshot,
  34. state: RouterStateSnapshot
  35. ): Promise<boolean> {
  36. let empresas = this.empresas_arr.filter(
  37. (element) => element.RFC == localStorage.getItem('RFCEMPRESA')
  38. );
  39. if (
  40. localStorage.getItem('TIMUSERENC') != 'undefined' &&
  41. localStorage.getItem('TIMUSERENC') != '' &&
  42. localStorage.getItem('TIMUSERENC') != null
  43. ) {
  44. let usuario: USERInterface = JSON.parse(
  45. localStorage.getItem('TIMUSERENC')!
  46. );
  47. let solicitud_datos = window.location.href.split('?');
  48. if (empresas.length === 0) {
  49. if (solicitud_datos[1] != null || solicitud_datos[1] != undefined) {
  50. let empresa: any = this.empresas_arr.filter(
  51. (element) => element.NOMBRE == solicitud_datos[1].toUpperCase()
  52. );
  53. if (empresa.length > 0) {
  54. localStorage.setItem('RFCEMPRESA', empresa[0].RFC);
  55. } else {
  56. //localStorage.setItem('RFCEMPRESA', 'ITTEC');
  57. }
  58. }
  59. } else {
  60. solicitud_datos[1] =
  61. solicitud_datos[1] == undefined ? '' : solicitud_datos[1];
  62. }
  63. const sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));
  64. await sleep(200);
  65. if (usuario != null) {
  66. switch (this._encService.desencriptar(usuario.PERFIL)) {
  67. case 'Administrador':
  68. if (solicitud_datos[1].includes('/mesmav')) {
  69. let info_correo = solicitud_datos[1].split('data=')[1];
  70. this.router.navigate([
  71. '/admin/mesmav',
  72. {
  73. solicitud_datos: info_correo,
  74. },
  75. ]);
  76. } else {
  77. this.router.navigate(['/admin/mesmpr']);
  78. }
  79. return false;
  80. case 'Usuario':
  81. return true;
  82. default:
  83. if (solicitud_datos[1].includes('/mesmav')) {
  84. let info_correo = solicitud_datos[1].split('data=')[1];
  85. this.router.navigate([
  86. '/iam',
  87. {
  88. solicitud_datos: info_correo,
  89. },
  90. ]);
  91. } else {
  92. this.router.navigate(['/iam']);
  93. }
  94. return false;
  95. }
  96. } else {
  97. if (solicitud_datos[1].includes('/mesmav')) {
  98. let info_correo = solicitud_datos[1].split('data=')[1];
  99. this.router.navigate([
  100. '/iam',
  101. {
  102. solicitud_datos: info_correo,
  103. },
  104. ]);
  105. } else {
  106. this.router.navigate(['/iam']);
  107. }
  108. return false;
  109. }
  110. } else {
  111. this.router.navigate(['/iam']);
  112. //localStorage.setItem('RFCEMPRESA', 'ITTEC');
  113. return false;
  114. }
  115. }
  116. }