2025-11-17 18:38:10 +08:00
|
|
|
package web
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"platform/web/auth"
|
|
|
|
|
|
|
|
|
|
"github.com/gofiber/contrib/otelfiber/v2"
|
|
|
|
|
"github.com/gofiber/fiber/v2"
|
2025-12-29 10:18:01 +08:00
|
|
|
"github.com/gofiber/fiber/v2/middleware/cors"
|
2025-11-17 18:38:10 +08:00
|
|
|
"github.com/gofiber/fiber/v2/middleware/logger"
|
|
|
|
|
"github.com/gofiber/fiber/v2/middleware/recover"
|
|
|
|
|
"github.com/gofiber/fiber/v2/middleware/requestid"
|
|
|
|
|
"github.com/google/uuid"
|
|
|
|
|
"github.com/jxskiss/base62"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func ApplyMiddlewares(app *fiber.App) {
|
|
|
|
|
|
|
|
|
|
// recover
|
|
|
|
|
app.Use(recover.New(recover.Config{
|
|
|
|
|
EnableStackTrace: true,
|
|
|
|
|
}))
|
|
|
|
|
|
2025-12-29 10:18:01 +08:00
|
|
|
// cors
|
|
|
|
|
app.Use(cors.New(cors.Config{
|
|
|
|
|
AllowCredentials: true,
|
|
|
|
|
AllowOriginsFunc: func(origin string) bool {
|
|
|
|
|
return true
|
|
|
|
|
},
|
|
|
|
|
}))
|
|
|
|
|
|
2025-11-17 18:38:10 +08:00
|
|
|
// logger
|
|
|
|
|
app.Use(logger.New(logger.Config{
|
|
|
|
|
Next: func(c *fiber.Ctx) bool {
|
|
|
|
|
return c.Path() == "/favicon.ico"
|
|
|
|
|
},
|
|
|
|
|
}))
|
|
|
|
|
|
2025-12-04 09:45:35 +08:00
|
|
|
// metric
|
|
|
|
|
app.Use(otelfiber.Middleware())
|
|
|
|
|
|
2025-11-17 18:38:10 +08:00
|
|
|
// request id
|
|
|
|
|
app.Use(requestid.New(requestid.Config{
|
|
|
|
|
Generator: func() string {
|
|
|
|
|
binary, _ := uuid.New().MarshalBinary()
|
|
|
|
|
return base62.EncodeToString(binary)
|
|
|
|
|
},
|
|
|
|
|
}))
|
|
|
|
|
|
|
|
|
|
// authenticate
|
|
|
|
|
app.Use(auth.Authenticate())
|
|
|
|
|
}
|