Configuración
Breadcrumbs

Autorización

En Anjana Data, la autorización de los usuarios se basa en la asignación de roles a las personas dentro de unidades organizativas (OUs). Esta combinación determina qué acciones puede realizar cada usuario y en qué ámbitos dentro de la plataforma.

image-20251117-184101.png
Ejemplo de usuario al que se le ha asignado un rol cross


Tabla User-Ou-Roles del Panel de Configuración (Visión administrador)

La gestión de estas asignaciones se realiza a través de la tabla Users-OU-Roles, que actúa como el mecanismo central de control de permisos.

image-20251117-180424.png
Captura de la tabla Users-OU-Roles para asignación de roles a usuarios en OUs

Estructura de la tabla Roles

Cada registro en la tabla users_ou_role define una asignación única entre un usuario, una unidad organizativa y un rol.
Los elementos que caracterizan dicha asignación son:

  • user: identificador único del usuario.

    • Corresponde al campo id de la tabla Users.

  • ou: identificador único de la Unidad Organizativa.

    • Corresponde al campo id de la tabla Organizational Unit.

La asignación debe realizarse en una unidad organizativa hoja, nunca en un nivel intermedio o nivel raíz. Por ejemplo, si se ha configurado la unidad “Espacio de datos/Turismo”, nunca se deben asignar roles a nivel de “·Espacio de datos”

  • role: identificador único del rol.

    • Corresponde al campo id de la tabla Roles.

Asignación de roles a usuarios

Para asignar a un usuario un rol (ver configuración de la tabla Roles) se deben seguir los siguientes pasos:

  1. Pulsar el botón New en la esquina superior derecha. Esto abrirá un asistente (wizard) con los campos definidos en el apartado Estructura.

  2. Completar los campos conforme a lo siguiente:

    1. user: Seleccionar el identificador del usuario. Si el usuario no existe, se debe crear previamente.

    2. ou: Seleccionar la unidad organizativa hoja correspondiente. Si no existe, se debe crear previamente.

    3. role: Seleccionar el rol de entre los roles configurados previamente. Si el rol no existe, se debe crear previamente.

  3. Pulsar en Save para guardar el rol o en Cancel para descartar.

image-20251117-182107.png
Captura de ejemplo de la asignación de un rol vertical

Para autorizar correctamente a usuarios con roles cross, se deben crear tantos registros como unidades organizativas hoja existan para poder autorizar con el rol cross en todas ellas.

Si en el perfil del usuario al que se le ha asignado un rol cross aparece un listado de unidades organizativas en lugar de la información de rol cross, esto es indicador de que falta alguna unidad organizativa por asignar el rol. En este caso, la plataforma emite una notificación al rol que se haya configurado (ver apartado de Notificaciones de plataforma y workflows)

Modificación de las autorizaciones

Para modificar la asignación de roles a usuarios en unidades organizativas se puede realizar eliminando un registro y creando uno nuevo.

Configuración de la autorización mediante acceso directo a la base de datos (Visión desarrollador)

La tabla de base de datos (BD) que contiene la parametría de la asignación de roles a usuarios tiene esta estructura:

Columna

Tipo de dato

Restricciones / Notas

user_id

int4 (INTEGER)

No nulo. Clave foránea a users.id_user. Identificador del usuario.

ou_id

int4 (INTEGER)

No nulo. Clave foránea a organizational_unit.id_organizational_unit. Identificador de la unidad organizativa.

rol_id

int4 (INTEGER)

No nulo. Clave foránea a role.id_role. Identificador del rol.

unique_idx

Restricción UNIQUE (user_id, ou_id, rol_id). Garantiza que no existan duplicados en la combinación user–OU–rol.

Claves foráneas

Columna

Tabla referenciada

Campo referenciado

Descripción

user_id

zeus.users

id_user

Valida que el usuario exista.

ou_id

zeus.organizational_unit

id_organizational_unit

Valida que la unidad organizativa exista.

rol_id

zeus.role

id_role

Valida que el rol exista.

Ejemplo de configuración mediante SQL

Para definir las asignaciones de usuario a roles:

SQL
INSERT INTO zeus.user_ou_role (user_id, ou_id, rol_id) VALUES
(1,1,1),
(1,39,4),
(2,1,15),
(2,1,16),
(2,3,2);