From 519a4a81bc3ae4738835a1fcb7cfaf72a06bf13b Mon Sep 17 00:00:00 2001 From: Bobby <30593201+luciferreeves@users.noreply.github.com> Date: Tue, 20 Jan 2026 14:32:35 +0530 Subject: Implement custom error handling and templates for HTTP responses --- controllers/errors.go | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 controllers/errors.go (limited to 'controllers/errors.go') 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, + }) +} -- cgit v1.2.3