Restringir datos por rol XavaPro 7.6 incluye un nuevo filtro llamado RolesFilter que permite restringir el acceso a los datos según los roles del usuario actual. Este filtro funciona comparando los roles del usuario con una propiedad de la entidad que contiene un nombre de rol. Para implementar esta restricción, sigue estos pasos: 1. Define una propiedad para el rol en tu entidad @Column(length=30, columnDefinition = "VARCHAR(30) DEFAULT 'user'")
private String rol;
Esta propiedad almacenará el nombre del rol que tiene permiso para acceder al registro. Puedes establecer un valor por defecto si lo deseas, como en el ejemplo anterior donde el valor predeterminado es 'user'. 2. Configura el filtro en la anotación @Tab @Tab(baseCondition = "${rol} IN (?)",
filter=com.openxava.naviox.filters.RolesFilter.class,
properties="anyo, numero, fecha, cliente.numero, cliente.nombre, ...")
La condición base ${rol} IN (?) indica que se filtrarán los registros donde el valor de la propiedad rol esté incluido en la lista de roles del usuario actual. El filtro RolesFilter proporciona automáticamente esta lista de roles. 3. Cómo funciona Cuando un usuario accede a la lista, el filtro RolesFilter obtiene todos los roles asignados al usuario actual y los utiliza para filtrar los datos. Por ejemplo:
- Si un usuario tiene asignado solo el rol 'user', solo verá los registros donde la propiedad rol tenga el valor 'user'.
- Si un usuario tiene asignados los roles 'admin' y 'user', verá los registros donde la propiedad rol tenga el valor 'admin' o 'user'.
Esto permite implementar un sistema de acceso a datos basado en roles, donde diferentes tipos de usuarios pueden ver diferentes conjuntos de datos según sus roles asignados. Recuerda importar las clases necesarias: import com.openxava.naviox.filters.RolesFilter;
Fíjate que el paquete es com.openxava.naviox, no org.openxava. |