package helpers import ( "errors" "fmt" "github.com/gofiber/fiber/v2" "github.com/gofiber/fiber/v2/log" ) func FiberErrorHandler(c *fiber.Ctx, err error) error { // Status code defaults to 500 code := fiber.StatusInternalServerError // Retrieve the custom status code if it's a *fiber.Error var e *fiber.Error if errors.As(err, &e) { code = e.Code } title := fmt.Sprintf("Erreur %d", code) message := err.Error() if code == 500 { log := GetLogger() log.Error( err, "url", c.OriginalURL(), "method", c.Method(), "code", code, "ip", c.IP(), ) message = "Une erreur est survenue, merci de prendre contact avec un administrateur." } // Send custom error page err = c.Status(code).Render("error_page", fiber.Map{ "PageTitle": title, "Code": code, "Message": message, }) if err != nil { log.Error(err) return c.Status( fiber.StatusInternalServerError, ).SendString( "Internal Server Error", ) } return nil }