Files
phishingclub/backend/app/middleware.go
2025-08-21 16:14:09 +02:00

44 lines
1.0 KiB
Go

package app
import (
"github.com/gin-gonic/gin"
"github.com/phishingclub/phishingclub/config"
"github.com/phishingclub/phishingclub/middleware"
"go.uber.org/zap"
)
// Middlwares is a collection of middlewares
type Middlewares struct {
IPLimiter gin.HandlerFunc
LoginRateLimiter gin.HandlerFunc
SessionHandler gin.HandlerFunc
}
// NewMiddlewares creates a collection of middlewares
func NewMiddlewares(
requestPerSecond float64,
requestBurst int,
conf *config.Config,
services *Services,
utils *Utilities,
logger *zap.SugaredLogger,
) *Middlewares {
ipLimiter := middleware.NewAllowIPMiddleware(conf, logger)
loginThrottle := middleware.NewIPRateLimiterMiddleware(
requestPerSecond, // requests per second
requestBurst, // burst
)
sessionHandler := middleware.NewSessionHandler(
services.Session,
services.User,
utils.JSONResponseHandler,
logger,
)
return &Middlewares{
IPLimiter: ipLimiter,
LoginRateLimiter: loginThrottle,
SessionHandler: sessionHandler,
}
}