auto(agent): improved input validation with Zod schemas and enhanced error details in offers.js

This commit is contained in:
OpenClaw 2026-03-06 17:48:32 +00:00
parent e6c84d7237
commit 4078d6ac57

View file

@ -5,6 +5,18 @@ import { requireAuth } from '../middleware/auth.js';
const router = Router();
// Zod schema for offer creation validation
const createOfferSchema = z.object({
amountChf: z.number().positive(),
message: z.string().max(2000).optional()
});
// Zod schema for negotiation validation
const negotiateSchema = z.object({
amountChf: z.number().positive(),
message: z.string().max(2000).optional()
});
router.post('/:requestId', requireAuth, async (req, res) => {
try {
const requestId = Number(req.params.requestId);
@ -12,13 +24,10 @@ router.post('/:requestId', requireAuth, async (req, res) => {
return res.status(400).json({ error: 'Invalid requestId' });
}
const parsed = z.object({
amountChf: z.number().positive(),
message: z.string().max(2000).optional()
}).safeParse(req.body);
const parsed = createOfferSchema.safeParse(req.body);
if (!parsed.success) {
return res.status(400).json({ error: 'Invalid payload' });
return res.status(400).json({ error: 'Invalid payload', details: parsed.error.flatten() });
}
const { amountChf, message } = parsed.data;
@ -44,13 +53,10 @@ router.post('/negotiation/:offerId', requireAuth, async (req, res) => {
return res.status(400).json({ error: 'Invalid offerId' });
}
const parsed = z.object({
amountChf: z.number().positive(),
message: z.string().max(2000).optional()
}).safeParse(req.body);
const parsed = negotiateSchema.safeParse(req.body);
if (!parsed.success) {
return res.status(400).json({ error: 'Invalid payload' });
return res.status(400).json({ error: 'Invalid payload', details: parsed.error.flatten() });
}
const { amountChf, message } = parsed.data;