feat: recordatorios periódicos; supervisor invita auxiliares; owner edita usuarios; precios planes y MSI

This commit is contained in:
Horux Dev
2026-06-25 20:56:39 +00:00
parent 0bded50e57
commit 57c4908e68
12 changed files with 770 additions and 102 deletions

View File

@@ -70,14 +70,24 @@ export async function inviteUsuario(req: Request, res: Response, next: NextFunct
}
const data = inviteSchema.parse(req.body);
// Los supervisores solo pueden invitar clientes
if (req.user!.role === 'supervisor' && data.role !== 'cliente') {
throw new AppError(403, 'Los supervisores solo pueden invitar clientes');
// Los supervisores solo pueden invitar clientes y auxiliares
if (req.user!.role === 'supervisor' && !['cliente', 'auxiliar'].includes(data.role)) {
throw new AppError(403, 'Los supervisores solo pueden invitar clientes y auxiliares');
}
// Validate: auxiliar requires a supervisor
if (data.role === 'auxiliar' && !data.supervisorUserId) {
throw new AppError(400, 'Debes asignar un supervisor al auxiliar');
// Un supervisor que invita un auxiliar se asigna a sí mismo por defecto
if (req.user!.role === 'supervisor') {
data.supervisorUserId = req.user!.userId;
} else {
throw new AppError(400, 'Debes asignar un supervisor al auxiliar');
}
}
// Un supervisor solo puede asignar auxiliares a sí mismo
if (req.user!.role === 'supervisor' && data.role === 'auxiliar' && data.supervisorUserId !== req.user!.userId) {
throw new AppError(403, 'Solo puedes asignar auxiliares a tu propia supervisión');
}
const usuario = await usuariosService.inviteUsuario(req.user!.tenantId, data);