summaryrefslogtreecommitdiff
path: root/controllers/errors.go
diff options
context:
space:
mode:
authorBobby <[email protected]>2026-01-20 14:32:35 +0530
committerBobby <[email protected]>2026-01-20 14:32:35 +0530
commit519a4a81bc3ae4738835a1fcb7cfaf72a06bf13b (patch)
tree671623fcda6ff32c671b3dff1dada4be413fc650 /controllers/errors.go
parent374fa73e53a3e8613f4b68e8d016c74d557d79a1 (diff)
downloadcafe-519a4a81bc3ae4738835a1fcb7cfaf72a06bf13b.tar.xz
cafe-519a4a81bc3ae4738835a1fcb7cfaf72a06bf13b.zip
Implement custom error handling and templates for HTTP responses
Diffstat (limited to 'controllers/errors.go')
-rw-r--r--controllers/errors.go62
1 files changed, 62 insertions, 0 deletions
diff --git a/controllers/errors.go b/controllers/errors.go
new file mode 100644
index 0000000..ba0e9df
--- /dev/null
+++ b/controllers/errors.go
@@ -0,0 +1,62 @@
+package controllers
+
+import (
+ "cafe/types"
+ "cafe/utils/shortcuts"
+
+ "github.com/gofiber/fiber/v2"
+)
+
+func BadRequest(context *fiber.Ctx, err error) error {
+ return shortcuts.RenderError(types.TemplateError{
+ Context: context,
+ PageTitle: "400 – Bad Request",
+ ErrorMessage: shortcuts.BuildErrorMessage(err, "The request could not be understood by the server."),
+ StatusCode: fiber.StatusBadRequest,
+ })
+}
+
+func DefaultError(context *fiber.Ctx, err error) error {
+ return shortcuts.RenderError(types.TemplateError{
+ Context: context,
+ PageTitle: "Error",
+ ErrorMessage: shortcuts.BuildErrorMessage(err, "An error occurred while processing your request."),
+ StatusCode: fiber.StatusInternalServerError,
+ })
+}
+
+func Forbidden(context *fiber.Ctx, err error) error {
+ return shortcuts.RenderError(types.TemplateError{
+ Context: context,
+ PageTitle: "403 – Forbidden",
+ ErrorMessage: shortcuts.BuildErrorMessage(err, "You do not have permission to access this resource."),
+ StatusCode: fiber.StatusForbidden,
+ })
+}
+
+func InternalServerError(context *fiber.Ctx, err error) error {
+ return shortcuts.RenderError(types.TemplateError{
+ Context: context,
+ PageTitle: "500 – Internal Server Error",
+ ErrorMessage: shortcuts.BuildErrorMessage(err, "An unexpected error occurred on the server."),
+ StatusCode: fiber.StatusInternalServerError,
+ })
+}
+
+func NotFound(context *fiber.Ctx, err error) error {
+ return shortcuts.RenderError(types.TemplateError{
+ Context: context,
+ PageTitle: "404 – Not Found",
+ ErrorMessage: shortcuts.BuildErrorMessage(err, "The page you are looking for does not exist."),
+ StatusCode: fiber.StatusNotFound,
+ })
+}
+
+func Unauthorized(context *fiber.Ctx, err error) error {
+ return shortcuts.RenderError(types.TemplateError{
+ Context: context,
+ PageTitle: "401 – Unauthorized",
+ ErrorMessage: shortcuts.BuildErrorMessage(err, "You must be logged in to access this resource."),
+ StatusCode: fiber.StatusUnauthorized,
+ })
+}