From 2a8a82e2af18d0ce9e2c29610e667d3ff25e7131 Mon Sep 17 00:00:00 2001 From: Michael Mandrus <41969079+mmandrus@users.noreply.github.com> Date: Tue, 18 Oct 2022 15:44:33 -0400 Subject: [PATCH] PublicDashboards: Don't filter datasources from FrontendSettings in a public dashboard (#57208) * add filter skip to avoid issues with RBAC * update comment --- pkg/api/frontendsettings.go | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/pkg/api/frontendsettings.go b/pkg/api/frontendsettings.go index 3ff4e29913e..3d82ded53ef 100644 --- a/pkg/api/frontendsettings.go +++ b/pkg/api/frontendsettings.go @@ -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)