datasources: ClearAuthHeadersMiddleware: refactor (#113707)
* refactor: extract logic * directly use the setting.cfg in the middleware * more granular config handling, per section * fixed unit test * refactor code to avoid lint error
This commit is contained in:
@@ -6,21 +6,26 @@ import (
|
||||
"github.com/grafana/grafana-plugin-sdk-go/backend"
|
||||
|
||||
"github.com/grafana/grafana/pkg/services/contexthandler"
|
||||
"github.com/grafana/grafana/pkg/setting"
|
||||
)
|
||||
|
||||
// NewClearAuthHeadersMiddleware creates a new backend.HandlerMiddleware
|
||||
// that will clear any outgoing HTTP headers that was part of the incoming
|
||||
// HTTP request and used when authenticating to Grafana.
|
||||
func NewClearAuthHeadersMiddleware() backend.HandlerMiddleware {
|
||||
func NewClearAuthHeadersMiddleware(cfgJWTAuth *setting.AuthJWTSettings, cfgAuthProxy *setting.AuthProxySettings) backend.HandlerMiddleware {
|
||||
return backend.HandlerMiddlewareFunc(func(next backend.Handler) backend.Handler {
|
||||
return &ClearAuthHeadersMiddleware{
|
||||
BaseHandler: backend.NewBaseHandler(next),
|
||||
BaseHandler: backend.NewBaseHandler(next),
|
||||
cfgJWTAuth: cfgJWTAuth,
|
||||
cfgAuthProxy: cfgAuthProxy,
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
type ClearAuthHeadersMiddleware struct {
|
||||
backend.BaseHandler
|
||||
cfgJWTAuth *setting.AuthJWTSettings
|
||||
cfgAuthProxy *setting.AuthProxySettings
|
||||
}
|
||||
|
||||
func (m *ClearAuthHeadersMiddleware) clearHeaders(ctx context.Context, h backend.ForwardHTTPHeaders) {
|
||||
@@ -30,11 +35,9 @@ func (m *ClearAuthHeadersMiddleware) clearHeaders(ctx context.Context, h backend
|
||||
return
|
||||
}
|
||||
|
||||
list := contexthandler.AuthHTTPHeaderListFromContext(ctx)
|
||||
if list != nil {
|
||||
for _, k := range list.Items {
|
||||
h.DeleteHTTPHeader(k)
|
||||
}
|
||||
items := contexthandler.GetAuthHTTPHeaders(m.cfgJWTAuth, m.cfgAuthProxy)
|
||||
for _, k := range items {
|
||||
h.DeleteHTTPHeader(k)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user