udistrital / sga_cliente

:heavy_check_mark: Check: cliente del Sistema de Gestión Académica (SGA)
Other
1 stars 3 forks source link

Revisión del flujo de identificación por error de direccionamiento y autenticación en el cliente de syllabus entorno de pruebas #1439

Closed fabianbarreto02 closed 1 year ago

fabianbarreto02 commented 1 year ago

Se requiere realizar la Revisión del flujo de identificación por error de direccionamiento y autenticación en el cliente de syllabus entorno de pruebas

Sub Tareas

Criterios de aceptación

Requerimientos

No aplica

Definition of Ready - DoR

Definition of Done - DoD - Desarrollo

NeFaWaltPint commented 1 year ago

La imposibilidad de pasar del login al dashboard cuando se usa LocationStrategy es que no da espera a web-component de tomar la url que pasa el _accesstoken y por ende no imite la información del usuario que da fin a esa transición del login, es decir este observador no estaba siendo activado addEventListener(user); situación extraña porque en cumplidos_dve_cliente y resoluciones_cliente_v2 consumen web-component y no es necesario realizar parches, por versión tampoco parece ser lío estos dos clientes tienen una versión de anguar superior a web-component, pero inferior a la del cliente actual, de hecho se prueba ajustando syllabus y también creando un proyecto con versión anterior y el problema se seguía presentando.

La "solución" es capturar el evento del router cuando pase por la ruta /access_token y simular el proceso que debía realizar web-component cuando va a emitir por user.

this.router.events.subscribe((event: any) => {
      // ...
      const urltk: string = event.url ? event.url : ""
      if (urltk.includes('/access_token')) {
        var params: any = {}, queryString = location.hash.substring(1), regex = /([^&=]+)=([^&]*)/g;
        let m;
        while (m = regex.exec(queryString)) {
          params[decodeURIComponent(m[1])] = decodeURIComponent(m[2]);
        }
        const req = new XMLHttpRequest();
        const query = 'https://' + window.location.host + '?' + queryString;
        req.open('GET', query, true);
        if (!!params['id_token']) {
          const id_token_array = (params['id_token']).split('.');
          const payload = JSON.parse(atob(id_token_array[1]));
          window.localStorage.setItem('access_token', params['access_token']);
          window.localStorage.setItem('expires_in', params['expires_in']);
          window.localStorage.setItem('state', params['state']);
          window.localStorage.setItem('id_token', params['id_token']);
        }
      }
      // ...
    });
  }
NeFaWaltPint commented 1 year ago

Test

Peek 25-09-2023 15-42