Explorar el Código

Handle zod errors in global error handler

GitOrigin-RevId: 2e23067b3af3178864064bc595c97a18e901ea60
Eric Mc Sween hace 1 año
padre
commit
27230aa017
Se han modificado 1 ficheros con 11 adiciones y 0 borrados
  1. 11 0
      services/web/app/src/Features/Errors/ErrorController.js

+ 11 - 0
services/web/app/src/Features/Errors/ErrorController.js

@@ -1,3 +1,4 @@
+const { isZodErrorLike, fromZodError } = require('zod-validation-error')
 const Errors = require('./Errors')
 const Errors = require('./Errors')
 const SessionManager = require('../Authentication/SessionManager')
 const SessionManager = require('../Authentication/SessionManager')
 const SamlLogHandler = require('../SamlLog/SamlLogHandler')
 const SamlLogHandler = require('../SamlLog/SamlLogHandler')
@@ -88,6 +89,13 @@ async function handleError(error, req, res, next) {
     if (shouldSendErrorResponse) {
     if (shouldSendErrorResponse) {
       HttpErrorHandler.badRequest(req, res, error.message)
       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 {
   } else {
     req.logger.setLevel('error')
     req.logger.setLevel('error')
     if (shouldSendErrorResponse) {
     if (shouldSendErrorResponse) {
@@ -118,6 +126,9 @@ function handleApiError(err, req, res, next) {
   } else if (err instanceof Errors.ForbiddenError) {
   } else if (err instanceof Errors.ForbiddenError) {
     req.logger.setLevel('warn')
     req.logger.setLevel('warn')
     res.sendStatus(403)
     res.sendStatus(403)
+  } else if (isZodErrorLike(err)) {
+    req.logger.setLevel('warn')
+    res.sendStatus(400)
   } else {
   } else {
     req.logger.setLevel('error')
     req.logger.setLevel('error')
     res.sendStatus(500)
     res.sendStatus(500)