grafana/public/app/features/browse-dashboards/permissions.ts
Tobias Skarhed 166641d66d
NestedFolders: Permission for creating and editing (#67406)
* Initial permissions

* Show/hide checkboxes

* Fix kinds from main

* CreateNewButton tests

* Update DashboardsTree test

* Mock folder permissions

* Rename showCheckBoxes to canSelect

* Make column ordering look better
2023-04-28 18:00:56 +02:00

27 lines
1.1 KiB
TypeScript

import { contextSrv } from 'app/core/core';
import { AccessControlAction, FolderDTO } from 'app/types';
function checkFolderPermission(action: AccessControlAction, fallback: boolean, folderDTO?: FolderDTO) {
return folderDTO
? contextSrv.hasAccessInMetadata(action, folderDTO, fallback)
: contextSrv.hasAccess(action, fallback);
}
export function getFolderPermissions(folderDTO?: FolderDTO) {
// It is possible to have edit permissions for folders and dashboards, without being able to save, hence 'canSave'
const canEditInFolderFallback = folderDTO ? folderDTO.canSave : contextSrv.hasEditPermissionInFolders;
const canEditInFolder = checkFolderPermission(AccessControlAction.FoldersWrite, canEditInFolderFallback, folderDTO);
const canCreateFolder = checkFolderPermission(AccessControlAction.FoldersCreate, contextSrv.isEditor);
const canCreateDashboards = checkFolderPermission(
AccessControlAction.DashboardsCreate,
canEditInFolderFallback || !!folderDTO?.canSave
);
return {
canEditInFolder,
canCreateDashboards,
canCreateFolder,
};
}