From 4d380978d304029ff17f2c2f0195e1b5b0a0c5b5 Mon Sep 17 00:00:00 2001 From: Gabriel MABILLE Date: Thu, 27 Oct 2022 15:48:07 +0200 Subject: [PATCH] Fix: Unlock new button based on user permissions (#57733) --- .../search/components/ManageDashboardsNew.tsx | 12 +++++++----- public/app/features/search/loaders.ts | 2 +- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/public/app/features/search/components/ManageDashboardsNew.tsx b/public/app/features/search/components/ManageDashboardsNew.tsx index 73a19d061c0..117747cbfd7 100644 --- a/public/app/features/search/components/ManageDashboardsNew.tsx +++ b/public/app/features/search/components/ManageDashboardsNew.tsx @@ -32,10 +32,12 @@ export const ManageDashboardsNew = React.memo(({ folder }: Props) => { const { isEditor } = contextSrv; const hasEditPermissionInFolders = folder ? canSave : contextSrv.hasEditPermissionInFolders; const canCreateFolders = contextSrv.hasAccess(AccessControlAction.FoldersCreate, isEditor); - const canCreateDashboards = contextSrv.hasAccess( - AccessControlAction.DashboardsCreate, - hasEditPermissionInFolders || !!canSave - ); + const canCreateDashboardsFallback = hasEditPermissionInFolders || !!canSave; + const canCreateDashboards = folder?.id + ? contextSrv.hasAccessInMetadata(AccessControlAction.DashboardsCreate, folder, canCreateDashboardsFallback) + : contextSrv.hasAccess(AccessControlAction.DashboardsCreate, canCreateDashboardsFallback); + const viewActions = (folder === undefined && canCreateFolders) || canCreateDashboards; + let [includePanels, setIncludePanels] = useLocalStorage(SEARCH_PANELS_LOCAL_STORAGE_KEY, true); if (!config.featureToggles.panelTitleSearch) { includePanels = false; @@ -60,7 +62,7 @@ export const ManageDashboardsNew = React.memo(({ folder }: Props) => { suffix={false ? : null} /> - {canCreateFolders && canCreateDashboards && ( + {viewActions && ( { - return backendSrv.getFolderByUid(uid).then((folder) => { + return backendSrv.getFolderByUid(uid, { withAccessControl: true }).then((folder) => { const navModel = buildNavModel(folder); navModel.children![0].active = true;