From 325402eaea5e82f6b9c6a46bdaa988e0f485d9df Mon Sep 17 00:00:00 2001 From: Pau Date: Sun, 6 Apr 2025 18:38:00 +0200 Subject: [PATCH] better error handling --- src/utils/errors.js | 26 +++++++++++++++++++++++++- src/utils/responses.js | 7 +++++-- 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/src/utils/errors.js b/src/utils/errors.js index ef1fa8c..70502c3 100644 --- a/src/utils/errors.js +++ b/src/utils/errors.js @@ -11,6 +11,10 @@ const errorHandler = (err, environment, message) => { responseJson.message = message || 'Bad Request' responseJson.code = 400 break + case 'UNAUTHORIZED': + responseJson.message = message || 'Unauthorized' + responseJson.code = 401 + break case 'FORBIDDEN': responseJson.message = message || 'Forbidden' responseJson.code = 403 @@ -37,6 +41,19 @@ const errorHandler = (err, environment, message) => { return responseJson } +const error400 = () => { + const err = new Error('Bad Request') + err.code = 'BAD_REQUEST' + err.status = 400 +} + +const error401 = () => { + const err = new Error('Unauthorized') + err.code = 'UNAUTHORIZED' + err.status = 401 + return err +} + const error403 = () => { const err = new Error('Forbidden') err.code = 'FORBIDDEN' @@ -51,6 +68,13 @@ const error404 = () => { return err } +const error409 = () => { + const err = new Error('Conflict') + err.code = 'CONFLICT' + err.status = 409 + return err +} + const error422 = (message = 'Unprocessable Entity') => { const err = new Error(message) err.code = 'UNPROCESSABLE_ENTITY' @@ -58,4 +82,4 @@ const error422 = (message = 'Unprocessable Entity') => { return err } -export { error403, error404, error422, errorHandler } \ No newline at end of file +export { error400, error401, error403, error404, error409, error422, errorHandler } \ No newline at end of file diff --git a/src/utils/responses.js b/src/utils/responses.js index f9787ed..6b92712 100644 --- a/src/utils/responses.js +++ b/src/utils/responses.js @@ -11,6 +11,10 @@ const sendResponseNoContent = (result, req, res) => { res.status(204).json(result) } +const sendResponseConflict = (res, err) => { + res.status(409).json(err) +} + const sendResponseServerError = (res, err) => { res.status(500).json(err) } @@ -42,7 +46,6 @@ const sendUnprocessableEntityResponse = (res, environment, err = error422()) => const sendLoginSuccessfullResponse = (result, req, res) => { res.status(201).json(result) - console.warn(`User ${result.user._data.username} has logged in`) } -export { sendLoginSuccessfullResponse, sendCreatedResponse, sendResponseAccessDenied, sendOkResponse, sendResponseBadRequest, sendResponseNoContent, sendResponseNotFound, sendResponseServerError, sendResponseUnauthorized, sendResponseUnprocessableEntity, sendUnprocessableEntityResponse } +export { sendResponseConflict, sendLoginSuccessfullResponse, sendCreatedResponse, sendResponseAccessDenied, sendOkResponse, sendResponseBadRequest, sendResponseNoContent, sendResponseNotFound, sendResponseServerError, sendResponseUnauthorized, sendResponseUnprocessableEntity, sendUnprocessableEntityResponse } \ No newline at end of file