pop-camarades/helpers/error_handler.go

55 lines
985 B
Go

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
}