import { Injectable } from '@angular/core'; import { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot, UrlTree, } from '@angular/router'; import { Observable } from 'rxjs'; import { USERInterface } from '../interfaces/user-interface'; import { ENCService } from '../services/enc/enc.service'; import { IAMService } from '../services/iam/iam.service'; import * as _sodium from 'libsodium-wrappers'; import { Logger } from 'html2canvas/dist/types/core/logger'; @Injectable({ providedIn: 'root', }) export class UserGuard implements CanActivate { empresas_arr: any[] = []; constructor( private _iamService: IAMService, private router: Router, private _encService: ENCService ) { this.empresas_arr = [ { RFC: 'TME700618RC7', NOMBRE: 'TIMKEN', }, ]; } async canActivate( route: ActivatedRouteSnapshot, state: RouterStateSnapshot ): Promise { let empresas = this.empresas_arr.filter( (element) => element.RFC == localStorage.getItem('RFCEMPRESA') ); if ( localStorage.getItem('TIMUSERENC') != 'undefined' && localStorage.getItem('TIMUSERENC') != '' && localStorage.getItem('TIMUSERENC') != null ) { let usuario: USERInterface = JSON.parse( localStorage.getItem('TIMUSERENC')! ); let solicitud_datos = window.location.href.split('?'); if (empresas.length === 0) { if (solicitud_datos[1] != null || solicitud_datos[1] != undefined) { let empresa: any = this.empresas_arr.filter( (element) => element.NOMBRE == solicitud_datos[1].toUpperCase() ); if (empresa.length > 0) { localStorage.setItem('RFCEMPRESA', empresa[0].RFC); } else { //localStorage.setItem('RFCEMPRESA', 'ITTEC'); } } } else { solicitud_datos[1] = solicitud_datos[1] == undefined ? '' : solicitud_datos[1]; } const sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms)); await sleep(200); if (usuario != null) { switch (this._encService.desencriptar(usuario.PERFIL)) { case 'Administrador': if (solicitud_datos[1].includes('/mesmav')) { let info_correo = solicitud_datos[1].split('data=')[1]; this.router.navigate([ '/admin/mesmav', { solicitud_datos: info_correo, }, ]); } else { this.router.navigate(['/admin/mesmpr']); } return false; case 'Usuario': return true; default: if (solicitud_datos[1].includes('/mesmav')) { let info_correo = solicitud_datos[1].split('data=')[1]; this.router.navigate([ '/iam', { solicitud_datos: info_correo, }, ]); } else { this.router.navigate(['/iam']); } return false; } } else { if (solicitud_datos[1].includes('/mesmav')) { let info_correo = solicitud_datos[1].split('data=')[1]; this.router.navigate([ '/iam', { solicitud_datos: info_correo, }, ]); } else { this.router.navigate(['/iam']); } return false; } } else { this.router.navigate(['/iam']); //localStorage.setItem('RFCEMPRESA', 'ITTEC'); return false; } } }