|
|
|
@ -3,22 +3,34 @@ import { contextSrv } from 'app/core/core'; |
|
|
|
|
import { AccessControlAction, FolderDTO } from 'app/types'; |
|
|
|
|
|
|
|
|
|
function checkFolderPermission(action: AccessControlAction, folderDTO?: FolderDTO) { |
|
|
|
|
return folderDTO ? contextSrv.hasPermissionInMetadata(action, folderDTO) : contextSrv.hasPermission(action); |
|
|
|
|
// Only some permissions are assigned in the root folder (aka "general" folder), so we can ignore them in most cases
|
|
|
|
|
return folderDTO && folderDTO.uid !== 'general' |
|
|
|
|
? contextSrv.hasPermissionInMetadata(action, folderDTO) |
|
|
|
|
: contextSrv.hasPermission(action); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function checkCanCreateFolders(folderDTO?: FolderDTO) { |
|
|
|
|
// Can only create a folder if we have permissions and either we're at root or nestedFolders is enabled
|
|
|
|
|
if (folderDTO && !config.featureToggles.nestedFolders) { |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return config.featureToggles.accessActionSets |
|
|
|
|
? checkFolderPermission(AccessControlAction.FoldersCreate, folderDTO) |
|
|
|
|
: checkFolderPermission(AccessControlAction.FoldersCreate) && |
|
|
|
|
checkFolderPermission(AccessControlAction.FoldersWrite, folderDTO); |
|
|
|
|
if (!config.featureToggles.accessActionSets) { |
|
|
|
|
if (!folderDTO || folderDTO.uid === 'general') { |
|
|
|
|
return checkFolderPermission(AccessControlAction.FoldersCreate); |
|
|
|
|
} |
|
|
|
|
return ( |
|
|
|
|
checkFolderPermission(AccessControlAction.FoldersCreate) && |
|
|
|
|
checkFolderPermission(AccessControlAction.FoldersWrite, folderDTO) |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return folderDTO |
|
|
|
|
? contextSrv.hasPermissionInMetadata(AccessControlAction.FoldersCreate, folderDTO) |
|
|
|
|
: contextSrv.hasPermission(AccessControlAction.FoldersCreate); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
export function getFolderPermissions(folderDTO?: FolderDTO) { |
|
|
|
|
// Can only create a folder if we have permissions and either we're at root or nestedFolders is enabled
|
|
|
|
|
const canCreateDashboards = checkFolderPermission(AccessControlAction.DashboardsCreate, folderDTO); |
|
|
|
|
const canCreateFolders = checkCanCreateFolders(folderDTO); |
|
|
|
|
const canDeleteFolders = checkFolderPermission(AccessControlAction.FoldersDelete, folderDTO); |
|
|
|
|