From 1c2ae2c72df4ccfe946a9a101736d5df51e0dc61 Mon Sep 17 00:00:00 2001 From: Ieva Date: Thu, 30 May 2024 10:06:01 +0300 Subject: [PATCH] Dashboards: Correctly display Admin access to dashboards in the UI (#88439) * include folder wildcard scope in dash permission inheritance * Update pkg/services/accesscontrol/ossaccesscontrol/permissions_services.go Co-authored-by: Karl Persson --------- Co-authored-by: Karl Persson --- .../ossaccesscontrol/permissions_services.go | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/pkg/services/accesscontrol/ossaccesscontrol/permissions_services.go b/pkg/services/accesscontrol/ossaccesscontrol/permissions_services.go index 57815a25f03..0e28a6a5316 100644 --- a/pkg/services/accesscontrol/ossaccesscontrol/permissions_services.go +++ b/pkg/services/accesscontrol/ossaccesscontrol/permissions_services.go @@ -170,14 +170,17 @@ func ProvideDashboardPermissions( return nil }, InheritedScopesSolver: func(ctx context.Context, orgID int64, resourceID string) ([]string, error) { + wildcards := accesscontrol.WildcardsFromPrefix(dashboards.ScopeFoldersPrefix) + scopes := []string(wildcards) + dashboard, err := getDashboard(ctx, orgID, resourceID) if err != nil { return nil, err } metrics.MFolderIDsServiceCount.WithLabelValues(metrics.AccessControl).Inc() // nolint:staticcheck - if dashboard.FolderID > 0 { - query := &dashboards.GetDashboardQuery{ID: dashboard.FolderID, OrgID: orgID} + if dashboard.FolderUID != "" { + query := &dashboards.GetDashboardQuery{UID: dashboard.FolderUID, OrgID: orgID} queryResult, err := dashboardStore.GetDashboard(ctx, query) if err != nil { return nil, err @@ -188,9 +191,12 @@ func ProvideDashboardPermissions( if err != nil { return nil, err } - return append([]string{parentScope}, nestedScopes...), nil + + scopes = append(scopes, parentScope) + scopes = append(scopes, nestedScopes...) + return scopes, nil } - return []string{dashboards.ScopeFoldersProvider.GetResourceScopeUID(folder.GeneralFolderUID)}, nil + return append(scopes, dashboards.ScopeFoldersProvider.GetResourceScopeUID(folder.GeneralFolderUID)), nil }, Assignments: resourcepermissions.Assignments{ Users: true,