Changes in srv middlewares

This commit is contained in:
PB
2025-10-20 17:16:53 +02:00
parent 6a9c3e3d3c
commit 7adf6f1699
2 changed files with 55 additions and 12 deletions

View File

@@ -0,0 +1,37 @@
package server
import (
"os"
"github.com/gofiber/fiber/v2"
jwt "github.com/gofiber/jwt/v2"
)
// JWTProtected func for specify routes group with JWT authentication.
// See: https://github.com/gofiber/jwt
func JWTProtected() func(*fiber.Ctx) error {
// Create config for JWT authentication middleware.
config := jwt.Config{
SigningKey: []byte(os.Getenv("JWT_SECRET_KEY")),
ContextKey: "jwt", // used in private routes
ErrorHandler: jwtError,
}
return jwt.New(config)
}
func jwtError(c *fiber.Ctx, err error) error {
// Return status 400 Bad Request and failed authentication error.
if err.Error() == "Missing or malformed JWT" {
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{
"error": true,
"msg": err.Error(),
})
}
// Return status 401 Unauthorized and failed authentication error.
return c.Status(fiber.StatusUnauthorized).JSON(fiber.Map{
"error": true,
"msg": err.Error(),
})
}

View File

@@ -1,30 +1,36 @@
package server package server
import ( import (
"github.com/gofiber/fiber/v2" "log"
"git.ego.freeddns.org/egommerce/go-api-pkg/fluentd" "github.com/gofiber/fiber/v2"
"github.com/google/uuid"
) )
// "github.com/gofiber/fiber/v2" // "github.com/gofiber/fiber/v2"
// "github.com/gofiber/fiber/v2/middleware/cors" // "github.com/gofiber/fiber/v2/middleware/cors"
func SetupMiddleware(s *Server) { func SetupMiddleware(s *Server) {
s.Use(defaultCORS) s.Use(LoggingMiddleware())
s.Use(LoggingMiddleware(s.GetLogger())) s.Use(XRequestIDMiddleware())
} }
func LoggingMiddleware(log *fluentd.Logger) func(c *fiber.Ctx) error { func LoggingMiddleware() func(c *fiber.Ctx) error {
return func(c *fiber.Ctx) error { return func(c *fiber.Ctx) error {
// path := string(c.Request().URI().Path()) log.Printf("Request: %s, remote: %s, via: %s",
// if strings.Contains(path, "/health") {
// return c.Next()
// }
log.Log("Request: %s, remote: %s, via: %s",
c.Request().URI().String(), c.Request().URI().String(),
c.Context().RemoteIP().String(), c.Context().RemoteIP().String(),
string(c.Context().UserAgent())) string(c.Context().UserAgent()),
)
return c.Next()
}
}
func XRequestIDMiddleware() func(c *fiber.Ctx) error {
return func(c *fiber.Ctx) error {
requestID := uuid.New().String()
c.Set("X-Request-ID", requestID)
return c.Next() return c.Next()
} }