diff --git a/http/router/ruler/builder.go b/http/router/ruler/builder.go index 22f0205..b0a853d 100644 --- a/http/router/ruler/builder.go +++ b/http/router/ruler/builder.go @@ -57,6 +57,7 @@ func (r *Router) RouteBuilder() RouteBuilder { type RouteBuilder struct { register func(Route) + auth middleware.Middleware mdws middleware.Middlewares group string route Route @@ -94,6 +95,12 @@ func (b RouteBuilder) UseFunc(middlewares ...middleware.MiddlewareFunc) RouteBui return b } +// Auth resets the auth middleware and return the a new route builder. +func (b RouteBuilder) Auth(auth middleware.Middleware) RouteBuilder { + b.auth = auth + return b +} + // Clone clones itself and returns a new route builder. func (b RouteBuilder) Clone() RouteBuilder { b.others = slices.Clone(b.others) @@ -240,6 +247,9 @@ func (b RouteBuilder) newRoute(handler http.Handler) (route Route) { mdws := make(middleware.Middlewares, 0, len(b.mdws)+1) mdws = append(mdws, b.mdws...) + if b.auth != nil { + mdws = append(mdws, b.auth) + } if len(mdws) > 0 { mdws.Sort() route.Use(mdws...)