PublicDashboards: Don't filter datasources from FrontendSettings in a public dashboard (#57208)

* add filter skip to avoid issues with RBAC

* update comment
This commit is contained in:
Michael Mandrus 2022-10-18 15:44:33 -04:00 committed by GitHub
parent 69bfd923be
commit 2a8a82e2af
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -215,21 +215,23 @@ func (hs *HTTPServer) getFrontendSettingsMap(c *models.ReqContext) (map[string]i
func (hs *HTTPServer) getFSDataSources(c *models.ReqContext, enabledPlugins EnabledPlugins) (map[string]plugins.DataSourceDTO, error) {
orgDataSources := make([]*datasources.DataSource, 0)
if c.OrgID != 0 {
query := datasources.GetDataSourcesQuery{OrgId: c.OrgID, DataSourceLimit: hs.Cfg.DataSourceLimit}
err := hs.DataSourcesService.GetDataSources(c.Req.Context(), &query)
if err != nil {
return nil, err
}
filtered, err := hs.filterDatasourcesByQueryPermission(c.Req.Context(), c.SignedInUser, query.Result)
if err != nil {
return nil, err
if c.IsPublicDashboardView {
// If RBAC is enabled, it will filter out all datasources for a public user, so we need to skip it
orgDataSources = query.Result
} else {
filtered, err := hs.filterDatasourcesByQueryPermission(c.Req.Context(), c.SignedInUser, query.Result)
if err != nil {
return nil, err
}
orgDataSources = filtered
}
orgDataSources = filtered
}
dataSources := make(map[string]plugins.DataSourceDTO)