Skip to content

Modulo gestión de usuarios y roles en el software

Flujo propuesto para el manejo de roles

  • TREEA_ADMIN (Tree-a) crea usuarios con rol ADMIN_COMPANY esos usuarios se guardan en la db principal de tree-a. ADMIN_COMPANY viene siendo el rol del cliente que alquila el software - aiqua-plantas. ADMIN_COMPANY tiene los permisos para crear usuarios dentro de su instancia del software (En este punto del flujo entra a regir los planes o plan que adquirió el cliente), puede crear por ejemplo: usuarios con rol: supervisores operarios y visores si está en un plan freemium, solo puede crear un usuario, a partir del plan Basic, ya puede crear más de dos usuarios.

Actualización en la gestion de usuarios mediante rutas (propios de tree-a y usurios de los clientes)

  • Se aislaron las rutas para separar responsabilidades y control de acceso: los usuarios internos de TREEA (TREEA_ADMIN, DISTRIBUIDOR) se gestionan en src/routes/v1/user.ts con validaciones de rol específicas (validateRole(['TREEA_ADMIN'])), mientras que los usuarios de clientes (SUPERVISOR, OPERADOR,TREEA_ADMIN y VISOR) se gestionan en src/routes/v1/userAdminCompany.ts con validaciones de funcionalidad (validateFunctionalityPermission(FUNCTIONALITIES.USER_CREATION)) y filtrado automático por company del JWT. Esta separación permite control de permisos especificos y detallados, evita conflictos entre tipos de usuario, mantiene URLs semánticamente claras (/user/* para internos, /client/* para clientes), y facilita el mantenimiento al tener lógicas de negocio específicas para cada tipo de usuario, aunque todos se almacenen en la misma base de datos principal.

IMPORTANTE:

  • Cual es el objetivo de tenantMiddleware? RTA: Es el middleware que implementa la arquitectura multi-tenant conectando cada usuario a su DB correspondiente

Notas importantes

  • Despues de crear una empresa, el cliente es redireccionado a crear usuario (ADMIN_COMPANY) el frontend debe llevarse el id de la compañia al formulario de crear usuario. A la fecha de hoy Martes 24 de diciembre de 2025 esto se hace seleccionando un plan, luego se crea la compañia
  • El middleware validateFunctionalityPermission(FUNCTIONALITIES.TREATMENT_PLANT_CREATION) reemplaza a validateRole(['TREEA_ADMIN','GESTOR']), ahora es mucho más flexible y mantenible

Usuarios para el cliente

  • Cuando se crean usuarios con rol SUPERVISOR, OPERADOR y VISOR se debe suministrar un campo llamado company (id de la compañia a la que pertenece) y el campo createdBy (_id del ADMIN_COMPANY que crear el usuario)