feat: Add new read filtering to datasources guardian (#91345)

* feat: Add new read filtering to datasources guardian

* Apply suggestion to use datasources read guardian check for frontend settings

---------

Co-authored-by: Eric Leijonmarck <eric.leijonmarck@gmail.com>
This commit is contained in:
Aaron Godin
2024-08-22 11:26:46 +01:00
committed by GitHub
co-authored by Eric Leijonmarck
parent 94a119ac63
commit 0176ead117
4 changed files with 7 additions and 2 deletions
+1 -1
View File
@@ -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)
}
+1 -1
View File
@@ -410,7 +410,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
}
@@ -17,3 +17,7 @@ func (n AllowGuardian) CanQuery(datasourceID int64) (bool, error) {
func (n AllowGuardian) FilterDatasourcesByQueryPermissions(ds []*datasources.DataSource) ([]*datasources.DataSource, error) {
return ds, nil
}
func (n AllowGuardian) FilterDatasourcesByReadPermissions(ds []*datasources.DataSource) ([]*datasources.DataSource, error) {
return ds, nil
}
@@ -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)
}