udistrital / sga_cliente

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

Creación de flujo de autenticación para consumo desde un iframe o ingreso directo al cliente por medio de web componets #1400

Closed fabianbarreto02 closed 8 months ago

fabianbarreto02 commented 1 year ago

Se requiere realizar la Creación de flujo de autenticación para consumo desde un iframe o ingreso directo al cliente por medio de web componets

Sub Tareas

Criterios de aceptación

Requerimientos

No aplica

Definition of Ready - DoR

Definition of Done - DoD - Desarrollo

JuanCamiloMartinezLopez commented 1 year ago

Implementación de autenticación con web component y iframe

Puesto que el cliente de syllabus estará embebido en otros clientes o tiene la posibilidad de acceder a el en solitario, es necesario manejar el proceso de autenticación de manera diferente.

  1. Se agrega la etiqueta ng-uui-oas, a la cual se le pasa el entorno en el cual se le esta ejecutando:
    <ng-uui-oas  *ngIf="!loaded" [environment]="environment"></ng-uui-oas>
  2. Se agrega el siguiente script en el index.html
    <script src="https://pruebasassets.portaloas.udistrital.edu.co/web-components.js" defer=""></script>  <noscript>Please enable JavaScript to continue using this application.</noscript>
  3. Se agregan las siguientes variables en el environment
    {
    production: false,
    entorno: 'test',
    autenticacion: true,
    notificaciones: false,
    menuApps: false,
    appname: 'sga',
    appMenu: 'sga
    }
  4. Se importa el siguiente modulo de angular/core y se agrega la propiedad esquemas del NgModule
    import { CUSTOM_ELEMENTS_SCHEMA,NgModule } from '@angular/core';
    @NgModule({
     ...
     schemas: [CUSTOM_ELEMENTS_SCHEMA]
     ...
    })
  5. En el controlador del componente principal o donde este la etiqueda ng-uui-oas se agrega la siguientes funcionalidades
const oas = document.querySelector('ng-uui-oas');
      if(!this.loaded){
        this.loaded = false;
      }

      oas?.addEventListener('user', (event: any) => {
        console.log(event)
        if (event.detail) {
          this.loadRouting = true;
          this.userService.updateUser(event.detail);
        }
      });

      oas?.addEventListener('option', (event: any) => {
        if (event.detail) {
          setTimeout(() => (this.router.navigate([event.detail.Url])), 50)
            ;
        }
      });

      oas?.addEventListener('logout', (event: any) => {
        if (event.detail) {
          console.log(event.detail);
        }
      });
    }

ejemplo: image image

fabianbarreto02 commented 8 months ago

Se da por finalizada la issue.