From 53efdac0f02659bb1434ce28c7623f9cab58ddb5 Mon Sep 17 00:00:00 2001 From: Tuan Dang Date: Fri, 7 Jul 2023 13:01:38 +0700 Subject: [PATCH] Bring back catch TokenExpiredError in backend error-handling middleware --- backend/src/middleware/requestErrorHandler.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/backend/src/middleware/requestErrorHandler.ts b/backend/src/middleware/requestErrorHandler.ts index dca6a82ba..2869a0f94 100644 --- a/backend/src/middleware/requestErrorHandler.ts +++ b/backend/src/middleware/requestErrorHandler.ts @@ -1,6 +1,7 @@ import * as Sentry from "@sentry/node"; import { ErrorRequestHandler } from "express"; -import { InternalServerError } from "../utils/errors"; +import { TokenExpiredError } from "jsonwebtoken"; +import { InternalServerError, UnauthorizedRequestError } from "../utils/errors"; import { getLogger } from "../utils/logger"; import RequestError, { LogLevel } from "../utils/requestError"; import { getNodeEnv } from "../config"; @@ -19,7 +20,9 @@ export const requestErrorHandler: ErrorRequestHandler = async ( } //TODO: Find better way to type check for error. In current setting you need to cast type to get the functions and variables from RequestError - if (!(error instanceof RequestError)) { + if (error instanceof TokenExpiredError) { + error = UnauthorizedRequestError({ stack: error.stack, message: "Token expired" }); + } else if (!(error instanceof RequestError)) { error = InternalServerError({ context: { exception: error.message }, stack: error.stack,