diff options
| author | Bobby <[email protected]> | 2026-03-07 14:25:54 +0530 |
|---|---|---|
| committer | Bobby <[email protected]> | 2026-03-07 14:25:54 +0530 |
| commit | 41926c10ea2e8496ce4b528262f5047ccbe6f155 (patch) | |
| tree | 67ff5a27bb50faec368cf7ef38a1b1f2866459dd /utils/shortcuts/error.go | |
| parent | ed2a033d7c08e448f5c6fd035e2de8f51431b597 (diff) | |
| download | dove-41926c10ea2e8496ce4b528262f5047ccbe6f155.tar.xz dove-41926c10ea2e8496ce4b528262f5047ccbe6f155.zip | |
Implement authentication system with login/logout functionality and session management
Diffstat (limited to 'utils/shortcuts/error.go')
| -rw-r--r-- | utils/shortcuts/error.go | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/utils/shortcuts/error.go b/utils/shortcuts/error.go new file mode 100644 index 0000000..71fa4bd --- /dev/null +++ b/utils/shortcuts/error.go @@ -0,0 +1,65 @@ +package shortcuts + +import ( + "dove/enums" + "dove/types" + + "github.com/gofiber/fiber/v2" +) + +var statusMap = map[enums.ErrorKind]int{ + enums.BadRequest: fiber.StatusBadRequest, + enums.Forbidden: fiber.StatusForbidden, + enums.Internal: fiber.StatusInternalServerError, + enums.NotFound: fiber.StatusNotFound, + enums.Unauthorized: fiber.StatusUnauthorized, + enums.Unprocessable: fiber.StatusUnprocessableEntity, +} + +func ServiceError(kind enums.ErrorKind, message string) *types.ServiceError { + return &types.ServiceError{ + Kind: kind, + Message: message, + } +} + +func HandleError(context *fiber.Ctx, serviceError *types.ServiceError) error { + statusCode, exists := statusMap[serviceError.Kind] + if !exists { + statusCode = fiber.StatusInternalServerError + } + + return RenderWithStatus(context, "error", fiber.Map{ + "ErrorMessage": serviceError.Message, + }, statusCode) +} + +func BadRequest(context *fiber.Ctx, err error) error { + return RenderWithStatus(context, "error", fiber.Map{ + "ErrorMessage": err.Error(), + }, fiber.StatusBadRequest) +} + +func Forbidden(context *fiber.Ctx, err error) error { + return RenderWithStatus(context, "error", fiber.Map{ + "ErrorMessage": err.Error(), + }, fiber.StatusForbidden) +} + +func InternalServerError(context *fiber.Ctx, err error) error { + return RenderWithStatus(context, "error", fiber.Map{ + "ErrorMessage": err.Error(), + }, fiber.StatusInternalServerError) +} + +func NotFound(context *fiber.Ctx, err error) error { + return RenderWithStatus(context, "error", fiber.Map{ + "ErrorMessage": err.Error(), + }, fiber.StatusNotFound) +} + +func Unauthorized(context *fiber.Ctx, err error) error { + return RenderWithStatus(context, "error", fiber.Map{ + "ErrorMessage": err.Error(), + }, fiber.StatusUnauthorized) +} |
