aboutsummaryrefslogtreecommitdiff
path: root/utils/shortcuts/error.go
diff options
context:
space:
mode:
authorBobby <[email protected]>2026-03-07 14:25:54 +0530
committerBobby <[email protected]>2026-03-07 14:25:54 +0530
commit41926c10ea2e8496ce4b528262f5047ccbe6f155 (patch)
tree67ff5a27bb50faec368cf7ef38a1b1f2866459dd /utils/shortcuts/error.go
parented2a033d7c08e448f5c6fd035e2de8f51431b597 (diff)
downloaddove-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.go65
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)
+}