chore: swap access check to folder client (#111490)

This commit is contained in:
Costa Alexoglou
2025-09-23 11:40:10 -05:00
committed by GitHub
parent a9de52c3e9
commit 8f77a3e0e8
+13 -9
View File
@@ -675,17 +675,21 @@ func (b *DashboardsAPIBuilder) GetAuthorizer() authorizer.Authorizer {
}
func (b *DashboardsAPIBuilder) verifyFolderAccessPermissions(ctx context.Context, user identity.Requester, folderIds ...string) error {
scopes := []string{}
for _, folderId := range folderIds {
scopes = append(scopes, dashboards.ScopeFoldersProvider.GetResourceScopeUID(folderId))
}
ok, err := b.accessControl.Evaluate(ctx, user, accesscontrol.EvalPermission(dashboards.ActionFoldersWrite, scopes...))
if err != nil {
return err
}
resp, err := b.folderClient.Get(ctx, folderId, user.GetOrgID(), metav1.GetOptions{}, "access")
if err != nil {
return dashboards.ErrFolderAccessDenied
}
var accessInfo folders.FolderAccessInfo
err = runtime.DefaultUnstructuredConverter.FromUnstructured(resp.Object, &accessInfo)
if err != nil {
b.log.Error("Failed to convert folder access response", "error", err)
return dashboards.ErrFolderAccessDenied
}
if !ok {
return dashboards.ErrFolderAccessDenied
if !accessInfo.CanEdit {
return dashboards.ErrFolderAccessDenied
}
}
return nil