| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- 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<boolean> {
-
- 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;
- }
- }
- }
|