58 lines
2.0 KiB
JavaScript
58 lines
2.0 KiB
JavaScript
/**
|
|
* ========================================
|
|
* MIDDLEWARE: handleValidation
|
|
* ========================================
|
|
*
|
|
* Middleware que procesa los resultados de validación de express-validator.
|
|
* Se usa DESPUÉS de los validadores para verificar si hubo errores.
|
|
*
|
|
* FLUJO DE EJECUCIÓN:
|
|
* 1. Los validadores (ej: registerValidator) marcan errores
|
|
* 2. Este middleware recoge esos errores con validationResult()
|
|
* 3. Si hay errores, devuelve 400 con la lista de errores
|
|
* 4. Si no hay errores, continúa a la ruta
|
|
*
|
|
* ORIGEN: Se importa en las rutas que usan validadores
|
|
* DESTINO: Si hay errores, termina con 400; si no, continúa a la lógica de la ruta
|
|
*
|
|
* EJEMPLO DE USO:
|
|
* const { registerValidator } = require('../validators/auth.validators');
|
|
* router.post('/register', registerValidator, handleValidation, async (req, res) => {
|
|
* // Si llega aquí, los datos ya fueron validados
|
|
* });
|
|
*
|
|
* FORMATO DE RESPUESTA CON ERRORES:
|
|
* {
|
|
* "errors": [
|
|
* { "msg": "Email inválido", "param": "email", "location": "body" },
|
|
* { "msg": "Password muy corta", "param": "password", "location": "body" }
|
|
* ]
|
|
* }
|
|
*/
|
|
|
|
const { validationResult } = require('express-validator');
|
|
|
|
/**
|
|
* @param {Request} req - Objeto de petición Express
|
|
* @param {Response} res - Objeto de respuesta Express
|
|
* @param {Function} next - Función para continuar al siguiente middleware
|
|
*/
|
|
module.exports = function handleValidation(req, res, next) {
|
|
try {
|
|
// 1. Extrae los errores de validación acumulados por express-validator
|
|
const errors = validationResult(req);
|
|
|
|
// 2. Si hay errores, devuelve 400 Bad Request con la lista
|
|
if (!errors.isEmpty()) {
|
|
return res.status(400).json({ errors: errors.array() });
|
|
}
|
|
|
|
// 3. Si no hay errores, continúa a la siguiente función (la ruta)
|
|
return next();
|
|
|
|
} catch (e) {
|
|
// 4. Si algo falla, pasa el error al manejador de errores de Express
|
|
return next(e);
|
|
}
|
|
};
|