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.tscon validaciones de rol específicas(validateRole(['TREEA_ADMIN'])), mientras que los usuarios de clientes (SUPERVISOR, OPERADOR,TREEA_ADMIN y VISOR) se gestionan ensrc/routes/v1/userAdminCompany.tscon 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 avalidateRole(['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)