function validateRequest(schema, source = 'body') { return (req, res, next) => { const dataToValidate = req[source]; const { error, value } = schema.validate(dataToValidate, { abortEarly: false, stripUnknown: true }); if (error) { const errorDetails = error.details.map(detail => ({ field: detail.path.join('.'), message: detail.message, value: detail.context.value })); return res.status(400).json({ success: false, message: 'Validation error', errors: errorDetails }); } // Replace the validated data source with validated and sanitized data req[source] = value; next(); }; } module.exports = { validateRequest };