feat(config): alta de usuarios desde Configuraciones (POST /config/usuarios, solo admin)

This commit is contained in:
2026-09-14 20:21:15 +00:00
parent 31379806be
commit b99707689f
5 changed files with 240 additions and 1 deletions

View File

@@ -7,6 +7,7 @@
import type { NextFunction, Request, Response } from 'express'
import { z } from 'zod'
import * as configService from '../services/config.service.js'
import { esRolValido } from '../config/roles.js'
import { AppError, BadRequestError } from '../utils/errors.js'
// ── Middleware admin ────────────────────────────────────────────────────
@@ -95,6 +96,27 @@ export async function actualizarUsuarioEndpoint(req: Request, res: Response): Pr
res.status(204).end()
}
// ── POST /api/config/usuarios — dar de alta un usuario (solo admin) ────
const crearUsuarioSchema = z.object({
nombre: z.string().trim().min(3, 'Nombre demasiado corto').max(80),
rol: z.string().min(1),
asignacion: z.string().nullable().optional(),
password: z.string().min(8, 'La contraseña necesita al menos 8 caracteres').max(72),
})
export async function crearUsuarioEndpoint(req: Request, res: Response): Promise<void> {
const body = crearUsuarioSchema.parse(req.body)
if (!esRolValido(body.rol)) throw new BadRequestError(`Rol inválido: ${body.rol}`)
const usuario = await configService.crearUsuario({
nombre: body.nombre,
rol: body.rol,
asignacion: body.asignacion ?? null,
password: body.password,
})
res.status(201).json(usuario)
}
// ── POST /api/config/reset-roles ───────────────────────────────────────
export async function resetRolesEndpoint(_req: Request, res: Response): Promise<void> {