[v11.0.x] LibraryPanels/RBAC: Ignore old folder permission check when deleting/patching lib panel (#88493)

LibraryPanels/RBAC: Ignore old folder permission check when deleting/patching lib panel (#88422)

* LibraryPanels/RBAC: Ignore old folder permission check when deleting lib panel

* Same for patching

(cherry picked from commit 8f45003192)

Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>
This commit is contained in:
grafana-delivery-bot[bot]
2024-05-30 14:40:17 +03:00
committed by GitHub
co-authored by kay delaney
parent 284aa73772
commit e4051d5fd6
+16 -10
View File
@@ -241,9 +241,12 @@ func (l *LibraryElementService) deleteLibraryElement(c context.Context, signedIn
return err
}
metrics.MFolderIDsServiceCount.WithLabelValues(metrics.LibraryElements).Inc()
// nolint:staticcheck
if err := l.requireEditPermissionsOnFolder(c, signedInUser, element.FolderID); err != nil {
return err
if !l.features.IsEnabled(c, featuremgmt.FlagLibraryPanelRBAC) {
// nolint:staticcheck
if err := l.requireEditPermissionsOnFolder(c, signedInUser, element.FolderID); err != nil {
return err
}
}
// Delete any hanging/invalid connections
@@ -539,17 +542,20 @@ func (l *LibraryElementService) handleFolderIDPatches(ctx context.Context, eleme
toFolderID = fromFolderID
}
// FolderID was provided in the PATCH request
if toFolderID != -1 && toFolderID != fromFolderID {
if err := l.requireEditPermissionsOnFolder(ctx, user, toFolderID); err != nil {
if !l.features.IsEnabled(ctx, featuremgmt.FlagLibraryPanelRBAC) {
// FolderID was provided in the PATCH request
if toFolderID != -1 && toFolderID != fromFolderID {
if err := l.requireEditPermissionsOnFolder(ctx, user, toFolderID); err != nil {
return err
}
}
// Always check permissions for the folder where library element resides
if err := l.requireEditPermissionsOnFolder(ctx, user, fromFolderID); err != nil {
return err
}
}
// Always check permissions for the folder where library element resides
if err := l.requireEditPermissionsOnFolder(ctx, user, fromFolderID); err != nil {
return err
}
metrics.MFolderIDsServiceCount.WithLabelValues(metrics.LibraryElements).Inc()
// nolint:staticcheck
elementToPatch.FolderID = toFolderID