From e4051d5fd6597a2b77a4c699b0e8e336b7bc9685 Mon Sep 17 00:00:00 2001 From: "grafana-delivery-bot[bot]" <132647405+grafana-delivery-bot[bot]@users.noreply.github.com> Date: Thu, 30 May 2024 14:40:17 +0300 Subject: [PATCH] [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 8f45003192854a476dbf113b5e718e7d13e8d682) Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com> --- pkg/services/libraryelements/database.go | 26 +++++++++++++++--------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/pkg/services/libraryelements/database.go b/pkg/services/libraryelements/database.go index 4f5932ec6b5..16c8511d4a2 100644 --- a/pkg/services/libraryelements/database.go +++ b/pkg/services/libraryelements/database.go @@ -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