Closed fabianbarreto02 closed 8 months ago
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.
<ng-uui-oas *ngIf="!loaded" [environment]="environment"></ng-uui-oas>
<script src="https://pruebasassets.portaloas.udistrital.edu.co/web-components.js" defer=""></script> <noscript>Please enable JavaScript to continue using this application.</noscript>
{
production: false,
entorno: 'test',
autenticacion: true,
notificaciones: false,
menuApps: false,
appname: 'sga',
appMenu: 'sga
}
import { CUSTOM_ELEMENTS_SCHEMA,NgModule } from '@angular/core';
@NgModule({
...
schemas: [CUSTOM_ELEMENTS_SCHEMA]
...
})
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:
Autenticación compartida de sistema padre: Para la autenticacion compartida se define un HostListener a la espera de un evento de tipo message que emite el padre al cargar le iframe con la información de autenticación:
@HostListener('window:message', ['$event']) onPostMessage(e:any) {
console.log('Message received',e);
if (e.data.type == 'authinfo') {
console.log("Message received from the parent: ", e.data); // Message received from parent
this.loaded = true;
this.loadRouting=true;
} else {
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);
console.log(this.loadRouting);
}
});
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);
}
});
}
}
de igual forma se maneja la variable loaded para indicar si se carga el menú nativo, en caso de ser cargado desde un iframe, y también cambiar la clase del contenedor para adaptarse a la visualización. ejemplo:
Se da por finalizada la issue.
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