Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Nombre

...

Utilidades para Roles y Usuarios

...

ID

...

A.ARQ.20

...

Versión

...

0.0.1-SNAPSHOT

...

Licencia

...

Free

...

Área

...

Arquitectura

...

Fase

...

Desarrollo

...

Tipo

...

Librería

...

Impacto

...

86 horas

Table of Contents
Info

Funcionalidad 

A continuación presentamos como integrarse con el backend de Roles&Usuarios así como su librería que engloba una serie de funcionalidades que podrían ser útiles a lo largo del desarrollo de microservicios que necesiten hacer uso del lo configurado en el módulo de Roles y Usuarios.

Esta

...

librería ayuda al usuario a simplificar su código además de ahorrar tiempo de programación que se suele invertir en funcionalidades frecuentes con la administración de roles y usuarios. De este modo, mediante a la importación de esta librería externa, se proporcionan al usuario dichas funcionalidades implementadas en la aplicación.

Consideraciones previas

Alternativas

Esta guía de uso está pensada para la integración directamente con el back-end usando las interfaces que la solución nos aporta para facilitar este propósito. Esencialmente se dan dos alternativas de integración que se verán a continuación.

Altair

Se trata de un cliente para GraphQL que nos facilita el uso de las peticiones a través de la documentación. Con la facilidad de un buscador y un simple click se pueden ir cargando los datos de las peticiones para que solo necesiten ser modificadas, sin necesidad de hacerlas manualmente.

Es la solución que nosotros recomendamos accesible a través del siguiente enlace (en desarrollo): https://dev.architecture.onesait.com/multi-user-roles/altair.

...

Playground

Se trata de un cliente algo más básico que Altair. Incluye también la documentación para consultar las operaciones que se pueden realizar pero no nos facilita de igual forma su uso. Toda operación realizable con Altair puede hacerse también con esta alternativa.

El enlace para acceder en desarrollo es el siguiente: https://dev.architecture.onesait.com/multi-user-roles/gui

...

Integración usando Altair

En la siguiente imagen se explican para que sirvan los diferentes iconos que aparecen en la interfaz de Altair.

...

Configuración previa

Las peticiones que se realizan en el módulo de roles y usuarios han de hacerse autenticados contra Keycloak, para ello es necesario obtener un token JWT y usarlo en la cabecera 'Authorization' de las peticiones GraphQL que se vayan a hacer. Otra forma de hacerlo es creando un script que se lance antes de la petición usando la opción "Pre-request Editor" que nos facilita Altair. Se adjunta ejemplo en la siguiente plantilla:

...

Hay que tener en cuenta también que en la primera ejecución de Altair es posible que haya definida una variable 'undefined'. Es necesario eliminarla para poder hacer peticiones.

Consideraciones

Cuando se usa la documentación con Altair es posible, a través de un simple click, desplazar la petición a la columna correspondiente como puede verse en la siguiente imagen.

...

Una vez esté todo completado simplemente habría que lanzar la petición por medio de 'Send Request'.

Resumen de operaciones

En esta sección se comentarán las principales operaciones a buscar en la documentación para asi simplificar la integración con roles y usuarios.

Producto

Operación

Nombre de operación en GraphQL

Obtener todos los productos

products

Obtener producto

product

Crear producto

createProduct

Editar producto

updateProduct

Eliminar producto

deleteProduct

Proyecto

Operación

Nombre de operación en GraphQL

Obtener todos los proyectos

projects

Obtener proyecto

project

Crear proyecto

createProject

Editar proyecto

updateProject

Eliminar proyecto

deleteProject

Módulo

Operación

Nombre de operación en GraphQL

Obtener todos los módulos

Producto: modulesProduct

Proyecto: modulesProject

Crear módulo

Producto: createModuleProduct

Proyecto: createModuleProject

Editar módulo

updateModule

Obtener todos los submódulos

Producto: submodulesProduct

Proyecto: submodulesProject

Crear submódulo

Producto: createSubmoduleProduct

Proyecto: createSubmoduleProject

Eliminar módulo

deleteModule

Eliminar submódulo

deletesubmodule

Permisos

Operación

Nombre de operación en GraphQL

Obtener permisos

Objeto de obtención

Nombre operación

Producto

permissionsRootProduct

Proyecto

permissionsRootProject

Módulo de producto

permissionsModuleProduct

Módulo de proyecto

permissionsModuleProject

Submódulo de producto

permissionsSubmoduleProduct

Submódulo de proyecto

permissionsSubmoduleProject

Crear permiso

createPermission

Editar permiso

updatePermission

Eliminar permiso

deletePermission

Rol

Operación

Nombre de operación en GraphQL

Obtener roles

Producto: rolesProduct

Proyecto: rolesProject

Obtener rol

role

Crear rol

Producto: createRoleProduct

Proyecto: createRoleProject

Editar rol

updateRole

Añadir permisos a un rol

roleAddPermissions

Editar permisos de un rol

roleSetPermissions

Borrar permisos de un rol

roleDeletePermissions

Eliminar rol

deleteRole

Usuarios

Operación

Nombre de operación en GraphQL

Obtener usuarios

users

Obtener usuario

user

Crear usuario

createUser

Editar usuario

updateUser

Borrar usuario

deleteUser

Integración con la librería de permisos

Roles & Usuarios dispone de gestión de permisos sobre los roles, y es posible integrar una librería para autorizar las peticiones sobre los permisos asignados a determinados roles. Para ello se hace uso de la librería que interpreta el token JWT generado y obtiene y analiza los permisos  sobre el proyecto.

...

Dependencia de maven

Code Block
<dependencies>
...
	<dependency>
		<groupId>com.minsait.onesait.architecture</groupId>
		<artifactId>onesait-multi-user-role-lib</artifactId>
		<version>0.0.1-SNAPSHOT</version>
	</dependency>
...
</dependencies>

Uso de la librería

Se integra directamente con Spring Security a través de su anotación @PreAuthorize, a continuación se muestran los distintos usos implementados en la librería.

...