Spaces:
Sleeping
Sleeping
File size: 969 Bytes
ef874e6 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | import { Request, Response, NextFunction } from 'express';
import { AnyZodObject, ZodError } from 'zod';
export const validate = (schema: AnyZodObject) => {
return async (req: Request, res: Response, next: NextFunction) => {
try {
const parsed = await schema.parseAsync({
body: req.body,
query: req.query,
params: req.params,
});
if (parsed.body !== undefined) req.body = parsed.body;
if (parsed.query !== undefined) req.query = parsed.query;
if (parsed.params !== undefined) req.params = parsed.params;
return next();
} catch (error) {
if (error instanceof ZodError) {
return res.status(400).json({
sukses: false,
pesan: 'Validasi input gagal',
errors: error.errors.map((err) => ({
field: err.path.slice(1).join('.'),
message: err.message,
})),
});
}
return next(error);
}
};
};
|