diff --git a/public/app/features/browse-dashboards/BrowseDashboardsPage.test.tsx b/public/app/features/browse-dashboards/BrowseDashboardsPage.test.tsx
index f7c1897fcfd..1d3598c1e9c 100644
--- a/public/app/features/browse-dashboards/BrowseDashboardsPage.test.tsx
+++ b/public/app/features/browse-dashboards/BrowseDashboardsPage.test.tsx
@@ -101,9 +101,10 @@ describe('browse-dashboards BrowseDashboardsPage', () => {
let server: SetupServer;
const mockPermissions = {
canCreateDashboards: true,
- canCreateFolder: true,
- canDeleteFolder: true,
- canEditFolder: true,
+ canEditDashboards: true,
+ canCreateFolders: true,
+ canDeleteFolders: true,
+ canEditFolders: true,
canViewPermissions: true,
canSetPermissions: true,
};
@@ -173,7 +174,7 @@ describe('browse-dashboards BrowseDashboardsPage', () => {
return {
...mockPermissions,
canCreateDashboards: false,
- canCreateFolder: false,
+ canCreateFolders: false,
};
});
render();
@@ -277,7 +278,7 @@ describe('browse-dashboards BrowseDashboardsPage', () => {
return {
...mockPermissions,
canCreateDashboards: false,
- canCreateFolder: false,
+ canCreateFolders: false,
};
});
render();
@@ -294,8 +295,8 @@ describe('browse-dashboards BrowseDashboardsPage', () => {
jest.spyOn(permissions, 'getFolderPermissions').mockImplementation(() => {
return {
...mockPermissions,
- canDeleteFolder: false,
- canEditFolder: false,
+ canDeleteFolders: false,
+ canEditFolders: false,
canSetPermissions: false,
canViewPermissions: false,
};
@@ -314,7 +315,7 @@ describe('browse-dashboards BrowseDashboardsPage', () => {
jest.spyOn(permissions, 'getFolderPermissions').mockImplementation(() => {
return {
...mockPermissions,
- canEditFolder: false,
+ canEditFolders: false,
};
});
render();
diff --git a/public/app/features/browse-dashboards/BrowseDashboardsPage.tsx b/public/app/features/browse-dashboards/BrowseDashboardsPage.tsx
index 251bb7a99e7..4b35b39ed76 100644
--- a/public/app/features/browse-dashboards/BrowseDashboardsPage.tsx
+++ b/public/app/features/browse-dashboards/BrowseDashboardsPage.tsx
@@ -78,9 +78,10 @@ const BrowseDashboardsPage = memo(({ match }: Props) => {
const hasSelection = useHasSelection();
- const { canEditFolder, canCreateDashboards, canCreateFolder } = getFolderPermissions(folderDTO);
+ const { canEditFolders, canEditDashboards, canCreateDashboards, canCreateFolders } = getFolderPermissions(folderDTO);
- const showEditTitle = canEditFolder && folderUID;
+ const showEditTitle = canEditFolders && folderUID;
+ const canSelect = canEditFolders || canEditDashboards;
const onEditTitle = async (newValue: string) => {
if (folderDTO) {
const result = await saveFolder({
@@ -101,11 +102,11 @@ const BrowseDashboardsPage = memo(({ match }: Props) => {
actions={
<>
{folderDTO && }
- {(canCreateDashboards || canCreateFolder) && (
+ {(canCreateDashboards || canCreateFolders) && (
)}
>
@@ -125,9 +126,9 @@ const BrowseDashboardsPage = memo(({ match }: Props) => {
{({ width, height }) =>
isSearching ? (
-
+
) : (
-
+
)
}
diff --git a/public/app/features/browse-dashboards/BrowseFolderAlertingPage.test.tsx b/public/app/features/browse-dashboards/BrowseFolderAlertingPage.test.tsx
index 14f057725d1..e7f01c2a7e1 100644
--- a/public/app/features/browse-dashboards/BrowseFolderAlertingPage.test.tsx
+++ b/public/app/features/browse-dashboards/BrowseFolderAlertingPage.test.tsx
@@ -37,9 +37,10 @@ describe('browse-dashboards BrowseFolderAlertingPage', () => {
let server: SetupServer;
const mockPermissions = {
canCreateDashboards: true,
- canCreateFolder: true,
- canDeleteFolder: true,
- canEditFolder: true,
+ canEditDashboards: true,
+ canCreateFolders: true,
+ canDeleteFolders: true,
+ canEditFolders: true,
canViewPermissions: true,
canSetPermissions: true,
};
@@ -105,8 +106,8 @@ describe('browse-dashboards BrowseFolderAlertingPage', () => {
jest.spyOn(permissions, 'getFolderPermissions').mockImplementation(() => {
return {
...mockPermissions,
- canDeleteFolder: false,
- canEditFolder: false,
+ canDeleteFolders: false,
+ canEditFolders: false,
canViewPermissions: false,
canSetPermissions: false,
};
diff --git a/public/app/features/browse-dashboards/BrowseFolderLibraryPanelsPage.test.tsx b/public/app/features/browse-dashboards/BrowseFolderLibraryPanelsPage.test.tsx
index 27424333759..b188fd20a93 100644
--- a/public/app/features/browse-dashboards/BrowseFolderLibraryPanelsPage.test.tsx
+++ b/public/app/features/browse-dashboards/BrowseFolderLibraryPanelsPage.test.tsx
@@ -37,9 +37,10 @@ describe('browse-dashboards BrowseFolderLibraryPanelsPage', () => {
let server: SetupServer;
const mockPermissions = {
canCreateDashboards: true,
- canCreateFolder: true,
- canDeleteFolder: true,
- canEditFolder: true,
+ canEditDashboards: true,
+ canCreateFolders: true,
+ canDeleteFolders: true,
+ canEditFolders: true,
canViewPermissions: true,
canSetPermissions: true,
};
@@ -110,8 +111,8 @@ describe('browse-dashboards BrowseFolderLibraryPanelsPage', () => {
jest.spyOn(permissions, 'getFolderPermissions').mockImplementation(() => {
return {
...mockPermissions,
- canDeleteFolder: false,
- canEditFolder: false,
+ canDeleteFolders: false,
+ canEditFolders: false,
canViewPermissions: false,
canSetPermissions: false,
};
diff --git a/public/app/features/browse-dashboards/components/FolderActionsButton.test.tsx b/public/app/features/browse-dashboards/components/FolderActionsButton.test.tsx
index 0c50ae35ec0..d6a4a134ad5 100644
--- a/public/app/features/browse-dashboards/components/FolderActionsButton.test.tsx
+++ b/public/app/features/browse-dashboards/components/FolderActionsButton.test.tsx
@@ -27,9 +27,10 @@ describe('browse-dashboards FolderActionsButton', () => {
const mockFolder = mockFolderDTO();
const mockPermissions = {
canCreateDashboards: true,
- canCreateFolder: true,
- canDeleteFolder: true,
- canEditFolder: true,
+ canEditDashboards: true,
+ canCreateFolders: true,
+ canDeleteFolders: true,
+ canEditFolders: true,
canViewPermissions: true,
canSetPermissions: true,
};
@@ -55,8 +56,8 @@ describe('browse-dashboards FolderActionsButton', () => {
jest.spyOn(permissions, 'getFolderPermissions').mockImplementation(() => {
return {
...mockPermissions,
- canDeleteFolder: false,
- canEditFolder: false,
+ canDeleteFolders: false,
+ canEditFolders: false,
canViewPermissions: false,
canSetPermissions: false,
};
@@ -98,7 +99,7 @@ describe('browse-dashboards FolderActionsButton', () => {
jest.spyOn(permissions, 'getFolderPermissions').mockImplementation(() => {
return {
...mockPermissions,
- canEditFolder: false,
+ canEditFolders: false,
};
});
render();
@@ -113,7 +114,7 @@ describe('browse-dashboards FolderActionsButton', () => {
jest.spyOn(permissions, 'getFolderPermissions').mockImplementation(() => {
return {
...mockPermissions,
- canDeleteFolder: false,
+ canDeleteFolders: false,
};
});
render();
@@ -168,8 +169,8 @@ describe('browse-dashboards FolderActionsButton', () => {
jest.spyOn(permissions, 'getFolderPermissions').mockImplementation(() => {
return {
...mockPermissions,
- canDeleteFolder: false,
- canEditFolder: false,
+ canDeleteFolders: false,
+ canEditFolders: false,
canViewPermissions: false,
canSetPermissions: false,
};
@@ -216,7 +217,7 @@ describe('browse-dashboards FolderActionsButton', () => {
jest.spyOn(permissions, 'getFolderPermissions').mockImplementation(() => {
return {
...mockPermissions,
- canEditFolder: false,
+ canEditFolders: false,
};
});
render();
@@ -230,7 +231,7 @@ describe('browse-dashboards FolderActionsButton', () => {
jest.spyOn(permissions, 'getFolderPermissions').mockImplementation(() => {
return {
...mockPermissions,
- canDeleteFolder: false,
+ canDeleteFolders: false,
};
});
render();
diff --git a/public/app/features/browse-dashboards/components/FolderActionsButton.tsx b/public/app/features/browse-dashboards/components/FolderActionsButton.tsx
index 0f2ed031cdc..149de26aefd 100644
--- a/public/app/features/browse-dashboards/components/FolderActionsButton.tsx
+++ b/public/app/features/browse-dashboards/components/FolderActionsButton.tsx
@@ -23,9 +23,9 @@ export function FolderActionsButton({ folder }: Props) {
const [showPermissionsDrawer, setShowPermissionsDrawer] = useState(false);
const [moveFolder] = useMoveFolderMutation();
const [deleteFolder] = useDeleteFolderMutation();
- const { canEditFolder, canDeleteFolder, canViewPermissions, canSetPermissions } = getFolderPermissions(folder);
+ const { canEditFolders, canDeleteFolders, canViewPermissions, canSetPermissions } = getFolderPermissions(folder);
// Can only move folders when nestedFolders is enabled
- const canMoveFolder = config.featureToggles.nestedFolders && canEditFolder;
+ const canMoveFolder = config.featureToggles.nestedFolders && canEditFolders;
const onMove = async (destinationUID: string) => {
await moveFolder({ folder, destinationUID });
@@ -94,11 +94,11 @@ export function FolderActionsButton({ folder }: Props) {
);
- if (!canViewPermissions && !canMoveFolder && !canDeleteFolder) {
+ if (!canViewPermissions && !canMoveFolder && !canDeleteFolders) {
return null;
}
diff --git a/public/app/features/browse-dashboards/permissions.ts b/public/app/features/browse-dashboards/permissions.ts
index 4236cdeb750..f93beba255e 100644
--- a/public/app/features/browse-dashboards/permissions.ts
+++ b/public/app/features/browse-dashboards/permissions.ts
@@ -7,21 +7,23 @@ function checkFolderPermission(action: AccessControlAction, folderDTO?: FolderDT
}
export function getFolderPermissions(folderDTO?: FolderDTO) {
- const canEditFolder = checkFolderPermission(AccessControlAction.FoldersWrite, folderDTO);
// Can only create a folder if we have permissions and either we're at root or nestedFolders is enabled
- const canCreateFolder = Boolean(
+ const canCreateDashboards = checkFolderPermission(AccessControlAction.DashboardsCreate, folderDTO);
+ const canCreateFolders = Boolean(
(!folderDTO || config.featureToggles.nestedFolders) && checkFolderPermission(AccessControlAction.FoldersCreate)
);
- const canCreateDashboards = checkFolderPermission(AccessControlAction.DashboardsCreate, folderDTO);
- const canDeleteFolder = checkFolderPermission(AccessControlAction.FoldersDelete, folderDTO);
- const canViewPermissions = checkFolderPermission(AccessControlAction.FoldersPermissionsRead, folderDTO);
+ const canDeleteFolders = checkFolderPermission(AccessControlAction.FoldersDelete, folderDTO);
+ const canEditDashboards = checkFolderPermission(AccessControlAction.DashboardsWrite, folderDTO);
+ const canEditFolders = checkFolderPermission(AccessControlAction.FoldersWrite, folderDTO);
const canSetPermissions = checkFolderPermission(AccessControlAction.FoldersPermissionsWrite, folderDTO);
+ const canViewPermissions = checkFolderPermission(AccessControlAction.FoldersPermissionsRead, folderDTO);
return {
canCreateDashboards,
- canCreateFolder,
- canDeleteFolder,
- canEditFolder,
+ canCreateFolders,
+ canDeleteFolders,
+ canEditDashboards,
+ canEditFolders,
canSetPermissions,
canViewPermissions,
};