Files
netbird/management/server/http/middleware/middleware_factory.go
T

35 lines
1.0 KiB
Go

package middleware
import (
"github.com/gorilla/mux"
"github.com/netbirdio/netbird/management/server/account"
"github.com/netbirdio/netbird/management/server/auth"
"github.com/netbirdio/netbird/management/server/telemetry"
"github.com/netbirdio/netbird/shared/ratelimit"
"github.com/rs/cors"
log "github.com/sirupsen/logrus"
)
func BuildMiddleware(rateLimiter *ratelimit.APIRateLimiter, authManager auth.Manager, accountManager account.Manager, metrics telemetry.AppMetrics) []mux.MiddlewareFunc {
toret := make([]mux.MiddlewareFunc, 0)
toret = append(toret, metrics.HTTPMiddleware().Handler)
toret = append(toret, cors.AllowAll().Handler)
if rateLimiter == nil {
log.Warn("NewAPIHandler: nil rate limiter, rate limiting disabled")
rateLimiter = ratelimit.NewAPIRateLimiter(nil)
rateLimiter.SetEnabled(false)
}
toret = append(toret, NewAuthMiddleware(
authManager,
accountManager.GetAccountIDFromUserAuth,
accountManager.SyncUserJWTGroups,
accountManager.GetUserFromUserAuth,
rateLimiter,
metrics.GetMeter(),
).Handler)
return toret
}