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:
Gábor Farkas
2025-11-21 14:18:32 +01:00
committed by GitHub
parent 203549ce3c
commit 669382c212
4 changed files with 230 additions and 390 deletions
@@ -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)
}
}