mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
add oauth pass thru logic to api/ds/query (#41352)
This commit is contained in:
parent
3a6b8535b1
commit
14742ea44a
@ -1,7 +1,9 @@
|
|||||||
package api
|
package api
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"errors"
|
"errors"
|
||||||
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@ -84,7 +86,7 @@ func (hs *HTTPServer) QueryMetricsV2(c *models.ReqContext, reqDTO dtos.MetricReq
|
|||||||
return response.Error(http.StatusForbidden, "Access denied", err)
|
return response.Error(http.StatusForbidden, "Access denied", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
req, err := hs.createRequest(ds, request)
|
req, err := hs.createRequest(c.Req.Context(), ds, request)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return response.Error(http.StatusBadRequest, "Request formation error", err)
|
return response.Error(http.StatusBadRequest, "Request formation error", err)
|
||||||
}
|
}
|
||||||
@ -224,12 +226,24 @@ func (hs *HTTPServer) QueryMetrics(c *models.ReqContext, reqDto dtos.MetricReque
|
|||||||
}
|
}
|
||||||
|
|
||||||
// nolint:staticcheck // plugins.DataQueryResponse deprecated
|
// nolint:staticcheck // plugins.DataQueryResponse deprecated
|
||||||
func (hs *HTTPServer) createRequest(ds *models.DataSource, query plugins.DataQuery) (*backend.QueryDataRequest, error) {
|
func (hs *HTTPServer) createRequest(ctx context.Context, ds *models.DataSource,
|
||||||
|
query plugins.DataQuery) (*backend.QueryDataRequest, error) {
|
||||||
instanceSettings, err := adapters.ModelToInstanceSettings(ds, hs.decryptSecureJsonDataFn())
|
instanceSettings, err := adapters.ModelToInstanceSettings(ds, hs.decryptSecureJsonDataFn())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if query.Headers == nil {
|
||||||
|
query.Headers = make(map[string]string)
|
||||||
|
}
|
||||||
|
|
||||||
|
if hs.OAuthTokenService.IsOAuthPassThruEnabled(ds) {
|
||||||
|
if token := hs.OAuthTokenService.GetCurrentOAuthToken(ctx, query.User); token != nil {
|
||||||
|
delete(query.Headers, "Authorization")
|
||||||
|
query.Headers["Authorization"] = fmt.Sprintf("%s %s", token.Type(), token.AccessToken)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
req := &backend.QueryDataRequest{
|
req := &backend.QueryDataRequest{
|
||||||
PluginContext: backend.PluginContext{
|
PluginContext: backend.PluginContext{
|
||||||
OrgID: ds.OrgId,
|
OrgID: ds.OrgId,
|
||||||
|
Loading…
Reference in New Issue
Block a user