Módulo de Gestión de Accesos
El Módulo de Gestión de Acceso es responsable de todas las formas de derechos y permisos de acceso de los usuarios. Esto incluye la entidad de procesamiento actual del usuario y los roles del usuario actual.
Gestión de Entidades de Procesamiento y Roles
Los roles de los usuarios se asignan directamente a la entidad de procesamiento seleccionada. Esto significa que el usuario puede tener diferentes roles para diferentes entidades de procesamiento. Cuando el usuario cambie su entidad de procesamiento, sus roles también cambiarán.
{
"auth":{
"user":{
"roles":{
"BANK_ENTITY_1":[
"ROLE_HTM_VIEWER"
],
"BANK_ENTITY_2":[
"ROLE_HTM_VIEWER",
"ROLE_HTM_EXECUTE",
"ROLE_HTM_APPROVER"
]
}
},
"activeEntity":"BANK_ENTITY_1",
"processingEntities":[
"BANK_ENTITY_1",
"BANK_ENTITY_2"
]
}
}
El ejemplo anterior muestra un usuario con 2 entidades de procesamiento,BANK_ENTITY_1 y BANK_ENTITY_2. El usuario tiene el ROLE_HTM_VIEWER rol para BANK_ENTITY_1 y el ROLE_HTM_VIEWER,ROLE_HTM_EXECUTE y ROLE_HTM_APPROVER roles para BANK_ENTITY_2. El usuario está visualizando actualmente BANK_ENTITY_1. Si el usuario cambia su entidad de procesamiento a BANK_ENTITY_2, sus roles también cambiarán a los roles asignados a BANK_ENTITY_2.
ProcessingEntitySelectorComponent
Un componente simple para cambiar la entidad de procesamiento de los usuarios. Este componente está estrechamente vinculado a la tienda, por lo que solo aparecerán las entidades de procesamiento disponibles para los usuarios.
Cuando el usuario selecciona una entidad de procesamiento de la lista, se le redirigirá a la página de inicio de la nueva entidad de procesamiento.
Ejemplo de uso:
<ops-gui-processing-entity></ops-gui-processing-entity>
El orden de procesamiento de las entidades dentro de esta lista puede ser configurado proporcionando una lista en ipf.authorisation.conf. El orden de procesamiento de las entidades en esta lista es el orden en el que se mostrarán en el ProcessingEntitySelectorComponent.
Si la lista no se proporciona, las entidades de procesamiento no se ordenarán. Si la lista está incompleta, se ordenarán las entidades coincidentes y el rest se añadirá simplemente a la lista.
ipf.authorisation {
processing-entities = [
{
name: "BANK_ENTITY_3",
code: "BE3"
},
{
name: "BANK_ENTITY_1",
code: "BE1"
},
{
name: "BANK_ENTITY_2",
code: "BE2"
}
]
}
ErrorPageComponent
Un componente que puede ser añadido a una ruta como una forma sencilla de mostrar errores.
Deberá proporcionar las claves de traducción para el título, el messageKey y el icono, como se observa en el ejemplo a continuación.
Donde 'icon' es un nombre de icono material (fonts.google.com/icons) Ejemplo de uso:
RouterModule.forChild([{
path: '403',
canActivate: [AuthGuard],
component: ErrorPageComponent,
data: {
titleKey: 'pageForbiddenTitle',
messageKey: 'pageForbiddenMessage',
icon: 'warning_amber'
}
}]);
IfUserHasRoleDirective
Una directiva que mostrará u ocultará el elemento dependiendo de si el usuario tiene el rol especificado. La directiva también se actualizará si el usuario cambia su entidad de procesamiento. Esta directiva está estrechamente vinculada a la tienda, por lo que solo funcionarán los roles disponibles para los usuarios. Si no se proporcionan roles, entonces el elemento se mostrará.
<div *ipfIfUserHasRoles="['ROLE_HTM_VIEWER']">
<p>Only users with the ROLE_HTM_VIEWER role will see this</p>
</div>
AuthGuard
Un guardia que verifica la tienda para ver si el usuario está autenticado. Si no, la ruta no se cargará.
Ejemplo de uso:
const routes: Routes = [
{
path: 'home',
component: HomeComponent,
canActivate: [AuthGuard]
}
];
ProcessingEntityGuard
Un guardia que verificará si el usuario ha seleccionado una entidad de procesamiento válida. Si el usuario ha ingresado una entidad de procesamiento inválida, entonces será redirigido a la página 404 no encontrada.
El guardia establecerá el current processingEntityId de la ruta en la tienda para que todos los módulos secundarios puedan referenciarlo fácilmente.
Ejemplo de uso:
const routes: Routes = [
{
path: 'home',
component: HomeComponent,
canActivate: [ProcessingEntityGuard]
}
];
RoleGuard
Un guardia que verificará si el usuario tiene uno de los roles especificados asignados a su token JWT. Si el usuario no tiene el rol, será redirigido a la página 403 prohibido.
Se deberá proporcionar una lista de roles que sean válidos para esta ruta en los datos de la ruta (consulte el ejemplo a continuación). Si no se proporcionan roles, entonces la página no se mostrará y habrá una advertencia para el desarrollador en la consola.
Ejemplo de uso:
const routes: Routes = [
{
path: 'home',
component: HomeComponent,
canActivate: [RoleGuard],
data: {
roles: ['ROLE_HTM_VIEWER']
}
}
];
Interceptor de Autenticación
Un interceptor que añadirá el token del usuario a todas las solicitudes. El interceptor también verificará si el token del usuario ha expirado y, si es así, el usuario será redirigido a la página de inicio de sesión.
{
provide: HTTP_INTERCEPTORS,
useClass: AuthInterceptor,
multi: true
}