IDForwarding: Require that id forwarding is enabled for data source (#77131)

* Require that id forwarding is enabled for data source

* Address feedback
This commit is contained in:
Karl Persson
2023-10-27 08:30:33 +02:00
committed by GitHub
parent 7d2bfea777
commit 1b6d39f823
4 changed files with 65 additions and 5 deletions
@@ -4,8 +4,12 @@ import (
"context"
"github.com/grafana/grafana-plugin-sdk-go/backend"
"github.com/grafana/grafana/pkg/components/simplejson"
"github.com/grafana/grafana/pkg/plugins"
"github.com/grafana/grafana/pkg/services/auth"
"github.com/grafana/grafana/pkg/services/contexthandler"
"github.com/grafana/grafana/pkg/services/datasources"
)
const forwardIDHeaderName = "X-Grafana-Id"
@@ -28,7 +32,16 @@ type ForwardIDMiddleware struct {
func (m *ForwardIDMiddleware) applyToken(ctx context.Context, pCtx backend.PluginContext, req backend.ForwardHTTPHeaders) error {
reqCtx := contexthandler.FromContext(ctx)
// if request not for a datasource or no HTTP request context skip middleware
if req == nil || reqCtx == nil || reqCtx.SignedInUser == nil {
if req == nil || reqCtx == nil || reqCtx.SignedInUser == nil || pCtx.DataSourceInstanceSettings == nil {
return nil
}
jsonDataBytes, err := simplejson.NewJson(pCtx.DataSourceInstanceSettings.JSONData)
if err != nil {
return err
}
if !auth.IsIDForwardingEnabledForDataSource(&datasources.DataSource{JsonData: jsonDataBytes}) {
return nil
}