diff --git a/pkg/api/datasources.go b/pkg/api/datasources.go index bb79dd6aee7..2a6b3bfd4b8 100644 --- a/pkg/api/datasources.go +++ b/pkg/api/datasources.go @@ -54,7 +54,7 @@ func (hs *HTTPServer) GetDataSources(c *contextmodel.ReqContext) response.Respon return response.Error(http.StatusInternalServerError, "Failed to query datasources", err) } - filtered, err := hs.dsGuardian.New(c.SignedInUser.OrgID, c.SignedInUser).FilterDatasourcesByQueryPermissions(dataSources) + filtered, err := hs.dsGuardian.New(c.SignedInUser.OrgID, c.SignedInUser).FilterDatasourcesByReadPermissions(dataSources) if err != nil { return response.Error(http.StatusInternalServerError, "Failed to query datasources", err) } diff --git a/pkg/api/frontendsettings.go b/pkg/api/frontendsettings.go index 7d50bd47140..a7a3f914a8c 100644 --- a/pkg/api/frontendsettings.go +++ b/pkg/api/frontendsettings.go @@ -412,7 +412,7 @@ func (hs *HTTPServer) getFSDataSources(c *contextmodel.ReqContext, availablePlug // If RBAC is enabled, it will filter out all datasources for a public user, so we need to skip it orgDataSources = dataSources } else { - filtered, err := hs.dsGuardian.New(c.SignedInUser.OrgID, c.SignedInUser).FilterDatasourcesByQueryPermissions(dataSources) + filtered, err := hs.dsGuardian.New(c.SignedInUser.OrgID, c.SignedInUser).FilterDatasourcesByReadPermissions(dataSources) if err != nil { return nil, err } diff --git a/pkg/services/datasources/guardian/allow_guardian.go b/pkg/services/datasources/guardian/allow_guardian.go index add832b43cb..fc482daf169 100644 --- a/pkg/services/datasources/guardian/allow_guardian.go +++ b/pkg/services/datasources/guardian/allow_guardian.go @@ -14,6 +14,10 @@ func (n AllowGuardian) CanQuery(datasourceID int64) (bool, error) { return true, nil } +func (n AllowGuardian) FilterDatasourcesByReadPermissions(ds []*datasources.DataSource) ([]*datasources.DataSource, error) { + return ds, nil +} + func (n AllowGuardian) FilterDatasourcesByQueryPermissions(ds []*datasources.DataSource) ([]*datasources.DataSource, error) { return ds, nil } diff --git a/pkg/services/datasources/guardian/provider.go b/pkg/services/datasources/guardian/provider.go index 261d7d02755..bc32282f0a1 100644 --- a/pkg/services/datasources/guardian/provider.go +++ b/pkg/services/datasources/guardian/provider.go @@ -11,6 +11,7 @@ type DatasourceGuardianProvider interface { type DatasourceGuardian interface { CanQuery(datasourceID int64) (bool, error) + FilterDatasourcesByReadPermissions([]*datasources.DataSource) ([]*datasources.DataSource, error) FilterDatasourcesByQueryPermissions([]*datasources.DataSource) ([]*datasources.DataSource, error) }