mirror of
https://github.com/phishingclub/phishingclub.git
synced 2026-02-12 16:12:44 +00:00
44 lines
1.0 KiB
Go
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,
|
|
}
|
|
}
|