From a22bde5d5d38e0ecaf64207519c0ed2d31cd7e6c Mon Sep 17 00:00:00 2001 From: Eric Mc Sween <5454374+emcsween@users.noreply.github.com> Date: Wed, 2 Jul 2025 17:49:46 -0400 Subject: [PATCH] Handle zod errors in global error handler GitOrigin-RevId: 2e23067b3af3178864064bc595c97a18e901ea60 --- .../web/app/src/Features/Errors/ErrorController.js | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/services/web/app/src/Features/Errors/ErrorController.js b/services/web/app/src/Features/Errors/ErrorController.js index b7f96a8b13..bb5059c530 100644 --- a/services/web/app/src/Features/Errors/ErrorController.js +++ b/services/web/app/src/Features/Errors/ErrorController.js @@ -1,3 +1,4 @@ +const { isZodErrorLike, fromZodError } = require('zod-validation-error') const Errors = require('./Errors') const SessionManager = require('../Authentication/SessionManager') const SamlLogHandler = require('../SamlLog/SamlLogHandler') @@ -88,6 +89,13 @@ async function handleError(error, req, res, next) { if (shouldSendErrorResponse) { HttpErrorHandler.badRequest(req, res, error.message) } + } else if (isZodErrorLike(error)) { + req.logger.setLevel('warn') + res.status(400) + if (shouldSendErrorResponse) { + const validationError = fromZodError(error) + res.render('general/400', { message: validationError.message }) + } } else { req.logger.setLevel('error') if (shouldSendErrorResponse) { @@ -118,6 +126,9 @@ function handleApiError(err, req, res, next) { } else if (err instanceof Errors.ForbiddenError) { req.logger.setLevel('warn') res.sendStatus(403) + } else if (isZodErrorLike(err)) { + req.logger.setLevel('warn') + res.sendStatus(400) } else { req.logger.setLevel('error') res.sendStatus(500)