Skip to main content

Permisos

El sistema de permisos controla el acceso a cada herramienta/módulo de la plataforma con 4 niveles de granularidad. Los permisos se asignan por usuario o por equipo, y se combinan con los roles globales.

Niveles de permiso

none → view → edit → admin
NivelDescripción
noneSin acceso al módulo
viewSolo lectura
editLectura y escritura
adminControl total (incluye gestión de usuarios y configuración)
La jerarquía es acumulativa: un usuario con nivel admin tiene automáticamente acceso edit y view.

Resolución de permisos

El permiso efectivo de un usuario para un módulo se resuelve con la siguiente prioridad:
  1. Permiso de usuario — Asignación directa al usuario para ese módulo
  2. Permiso de equipo — Si no hay permiso individual, se usa el del equipo
  3. Default por rol — Si no hay permiso de equipo, se aplica el default del rol global

Módulos y grupos

Los módulos (herramientas) se organizan en grupos para la vista del home:
  • Cada módulo tiene un app_type: tool (herramienta nativa) o link (enlace externo)
  • Los grupos definen el orden de visualización en el dashboard
  • La visibilidad se controla por equipo: un grupo o módulo puede ser visible solo para ciertos equipos

Layout personalizado

Cada usuario puede personalizar su layout del home:
  • Reordenar módulos y grupos
  • El layout se guarda en la base de datos
  • Se puede resetear al layout por defecto

API

Módulos para el usuario

MétodoEndpointDescripción
GET/permissions/modules/homeMódulos visibles para el usuario actual
GET/permissions/modules/home-layoutLayout con grupos y módulos
GET/PUT/DELETE/permissions/modules/my-layoutLayout personalizado

Administración de módulos (Admin)

MétodoEndpointDescripción
GET/permissions/modules/adminTodos los módulos con info de visibilidad
POST/permissions/modulesCrear módulo
PATCH/permissions/modules/:idActualizar módulo
DELETE/permissions/modules/:idEliminar módulo
POST/permissions/modules/:id/upload-iconSubir ícono (máx 2MB, solo imagen)

Grupos (Admin)

MétodoEndpointDescripción
GET/permissions/modules/groupsListar grupos
POST/permissions/modules/groupsCrear grupo
PATCH/permissions/modules/groups/:idActualizar grupo
DELETE/permissions/modules/groups/:idEliminar grupo
GET/PUT/permissions/modules/groups/:id/visibilityVisibilidad por equipo
GET/PUT/permissions/modules/:id/visibilityVisibilidad de módulo por equipo

Asignación de permisos (Admin)

MétodoEndpointDescripción
GET/permissions/user/:userIdPermisos del usuario
POST/permissions/user/:userIdAsignar permiso a usuario
GET/permissions/team/:teamIdPermisos del equipo
POST/permissions/team/:teamIdAsignar permiso al equipo
GET/permissions/user/:userId/module/:slugVerificar permiso específico
GET/permissions/user/:userId/accessAcceso completo del usuario a módulos

Filtrado de módulos visibles

El método getHomeModules filtra los módulos usando estas reglas:
  1. Auth0 tools: módulos asignados en los claims del JWT
  2. Módulos personales: módulos creados por el propio usuario
  3. Visibilidad por equipo: módulos visibles para los equipos del usuario
  4. Módulos globales: módulos marcados como visibles para todos
El sistema de permisos se aplica tanto en el frontend (renderizado condicional de módulos) como en el backend (guards de acceso en cada endpoint).