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;