Files
phishingclub/backend/app/middleware.go
Ronni Skansing 3767adfad2 extend request deadline for applicatoin update
Signed-off-by: Ronni Skansing <rskansing@gmail.com>
2026-01-29 23:07:50 +01:00

51 lines
1.2 KiB
Go

package app
import (
"time"
"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,
}
}
// ExtendedTimeout returns a middleware that extends the write deadline for long-running operations.
func (m *Middlewares) ExtendedTimeout(timeout time.Duration) gin.HandlerFunc {
return middleware.ExtendedTimeout(timeout)
}