From c1645b2d4b1e5de85ea332609b105b29476e27c5 Mon Sep 17 00:00:00 2001 From: Lectom C Han Date: Fri, 13 Feb 2026 10:23:45 +0900 Subject: [PATCH] =?UTF-8?q?i18n=20=EA=B4=91=EC=97=AD=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/cmd/server/main.go | 9 ++--- backend/internal/response/error_response.go | 44 +++++++++++++++++++++ 2 files changed, 47 insertions(+), 6 deletions(-) create mode 100644 backend/internal/response/error_response.go diff --git a/backend/cmd/server/main.go b/backend/cmd/server/main.go index 301cab51..ee0ad215 100644 --- a/backend/cmd/server/main.go +++ b/backend/cmd/server/main.go @@ -7,6 +7,7 @@ import ( "baron-sso-backend/internal/idp" "baron-sso-backend/internal/logger" "baron-sso-backend/internal/middleware" + "baron-sso-backend/internal/response" "baron-sso-backend/internal/repository" "baron-sso-backend/internal/service" "baron-sso-backend/internal/validator" @@ -292,16 +293,12 @@ func main() { "method", c.Method(), ) // Return masked message - return c.Status(code).JSON(fiber.Map{ - "error": "Internal Server Error", - }) + return response.Error(c, code, response.StatusCode(code), "Internal Server Error") } } // For development or non-500 errors, return the actual error message - return c.Status(code).JSON(fiber.Map{ - "error": err.Error(), - }) + return response.Error(c, code, response.StatusCode(code), err.Error()) }, }) diff --git a/backend/internal/response/error_response.go b/backend/internal/response/error_response.go new file mode 100644 index 00000000..6ebb826f --- /dev/null +++ b/backend/internal/response/error_response.go @@ -0,0 +1,44 @@ +package response + +import "github.com/gofiber/fiber/v2" + +type ErrorResponse struct { + Error string `json:"error"` + Code string `json:"code,omitempty"` + Details interface{} `json:"details,omitempty"` +} + +func Error(c *fiber.Ctx, status int, code, message string) error { + return ErrorWithDetails(c, status, code, message, nil) +} + +func ErrorWithDetails(c *fiber.Ctx, status int, code, message string, details interface{}) error { + resp := ErrorResponse{ + Error: message, + Code: code, + Details: details, + } + + return c.Status(status).JSON(resp) +} + +func StatusCode(status int) string { + switch status { + case fiber.StatusBadRequest: + return "bad_request" + case fiber.StatusUnauthorized: + return "invalid_session" + case fiber.StatusForbidden: + return "forbidden" + case fiber.StatusNotFound: + return "not_found" + case fiber.StatusConflict: + return "conflict" + case fiber.StatusTooManyRequests: + return "rate_limited" + case fiber.StatusServiceUnavailable: + return "service_unavailable" + default: + return "internal_error" + } +}