feat: Folder Permission

v3.2
zhangzhanwei 2025-10-21 15:13:15 +08:00 committed by zhanweizhang7
parent f6c72b44c2
commit 0bc635a802
16 changed files with 184 additions and 102 deletions

View File

@ -41,7 +41,7 @@ class FolderView(APIView):
lambda r, kwargs: Permission(group=Group(f"{kwargs.get('source')}_FOLDER"), operate=Operate.EDIT, lambda r, kwargs: Permission(group=Group(f"{kwargs.get('source')}_FOLDER"), operate=Operate.EDIT,
resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}/{kwargs.get('source')}/{r.data.get('parent_id')}"), resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}/{kwargs.get('source')}/{r.data.get('parent_id')}"),
lambda r, kwargs: Permission(group=Group(kwargs.get('source')), operate=Operate.EDIT, lambda r, kwargs: Permission(group=Group(kwargs.get('source')), operate=Operate.EDIT,
resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}/ROLE/WORKSPACE_MANAGE" resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}:ROLE/WORKSPACE_MANAGE"
), ),
lambda r, kwargs: ViewPermission([RoleConstants.USER.get_workspace_role()], lambda r, kwargs: ViewPermission([RoleConstants.USER.get_workspace_role()],
[Permission(group=Group(f"{kwargs.get('source')}_FOLDER"), [Permission(group=Group(f"{kwargs.get('source')}_FOLDER"),
@ -100,7 +100,7 @@ class FolderView(APIView):
) )
@has_permissions( @has_permissions(
lambda r, kwargs: Permission(group=Group(kwargs.get('source')), operate=Operate.EDIT, lambda r, kwargs: Permission(group=Group(kwargs.get('source')), operate=Operate.EDIT,
resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}/ROLE/WORKSPACE_MANAGE" resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}:ROLE/WORKSPACE_MANAGE"
), ),
lambda r, kwargs: Permission(group=Group(f"{kwargs.get('source')}_FOLDER"), operate=Operate.EDIT, lambda r, kwargs: Permission(group=Group(f"{kwargs.get('source')}_FOLDER"), operate=Operate.EDIT,
resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}/{kwargs.get('source')}/{kwargs.get('folder_id')}" resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}/{kwargs.get('source')}/{kwargs.get('folder_id')}"
@ -152,7 +152,7 @@ class FolderView(APIView):
) )
@has_permissions( @has_permissions(
lambda r, kwargs: Permission(group=Group(kwargs.get('source')), operate=Operate.EDIT, lambda r, kwargs: Permission(group=Group(kwargs.get('source')), operate=Operate.EDIT,
resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}/ROLE/WORKSPACE_MANAGE" resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}:ROLE/WORKSPACE_MANAGE"
), ),
lambda r, kwargs: Permission(group=Group(f"{kwargs.get('source')}_FOLDER"), operate=Operate.EDIT, lambda r, kwargs: Permission(group=Group(f"{kwargs.get('source')}_FOLDER"), operate=Operate.EDIT,
resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}/{kwargs.get('source')}/{kwargs.get('folder_id')}" resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}/{kwargs.get('source')}/{kwargs.get('folder_id')}"

View File

@ -117,7 +117,7 @@ class WorkspaceResourceUserPermissionView(APIView):
@has_permissions( @has_permissions(
lambda r, kwargs: Permission(group=Group(kwargs.get('resource')), lambda r, kwargs: Permission(group=Group(kwargs.get('resource')),
operate=Operate.AUTH, operate=Operate.AUTH,
resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}/ROLE/WORKSPACE_MANAGE"), resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}:ROLE/WORKSPACE_MANAGE"),
lambda r, kwargs: Permission(group=Group(kwargs.get('resource')), lambda r, kwargs: Permission(group=Group(kwargs.get('resource')),
operate=Operate.AUTH, operate=Operate.AUTH,
resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}/{kwargs.get('resource')}/{kwargs.get('target')}"), resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}/{kwargs.get('resource')}/{kwargs.get('target')}"),
@ -151,7 +151,7 @@ class WorkspaceResourceUserPermissionView(APIView):
@has_permissions( @has_permissions(
lambda r, kwargs: Permission(group=Group(kwargs.get('resource')), lambda r, kwargs: Permission(group=Group(kwargs.get('resource')),
operate=Operate.AUTH, operate=Operate.AUTH,
resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}/ROLE/WORKSPACE_MANAGE"), resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}:ROLE/WORKSPACE_MANAGE"),
lambda r, kwargs: Permission(group=Group(kwargs.get('resource')), lambda r, kwargs: Permission(group=Group(kwargs.get('resource')),
operate=Operate.AUTH, operate=Operate.AUTH,
resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}/{kwargs.get('resource')}/{kwargs.get('target')}"), resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}/{kwargs.get('resource')}/{kwargs.get('target')}"),
@ -181,7 +181,7 @@ class WorkspaceResourceUserPermissionView(APIView):
@has_permissions( @has_permissions(
lambda r, kwargs: Permission(group=Group(kwargs.get('resource')), lambda r, kwargs: Permission(group=Group(kwargs.get('resource')),
operate=Operate.AUTH, operate=Operate.AUTH,
resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}/ROLE/WORKSPACE_MANAGE"), resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}:ROLE/WORKSPACE_MANAGE"),
lambda r, kwargs: Permission(group=Group(kwargs.get('resource')), lambda r, kwargs: Permission(group=Group(kwargs.get('resource')),
operate=Operate.AUTH, operate=Operate.AUTH,
resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}/{kwargs.get('resource')}/{kwargs.get('target')}"), resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}/{kwargs.get('resource')}/{kwargs.get('target')}"),

View File

@ -48,7 +48,7 @@
</div> </div>
<div <div
v-if="canOperation && permissionPrecise.folderManage(data.id)" v-if="canOperation && MoreFilledPermission(node, data)"
@click.stop @click.stop
v-show="hoverNodeId === data.id" v-show="hoverNodeId === data.id"
@mouseenter.stop="handleMouseEnter(data)" @mouseenter.stop="handleMouseEnter(data)"
@ -56,28 +56,28 @@
class="mr-16" class="mr-16"
> >
<el-dropdown trigger="click" :teleported="false"> <el-dropdown trigger="click" :teleported="false">
<el-button text class="w-full" v-if="permissionPrecise.folderManage(data.id)"> <el-button text class="w-full" v-if="MoreFilledPermission(node, data)">
<AppIcon iconName="app-more"></AppIcon> <AppIcon iconName="app-more"></AppIcon>
</el-button> </el-button>
<template #dropdown> <template #dropdown>
<el-dropdown-menu> <el-dropdown-menu>
<el-dropdown-item <el-dropdown-item
@click.stop="openCreateFolder(data)" @click.stop="openCreateFolder(data)"
v-if="node.level !== 3 && permissionPrecise.folderManage(data.id)" v-if="node.level !== 3 && permissionPrecise.folderCreate(data.id)"
> >
<AppIcon iconName="app-add-folder" class="color-secondary"></AppIcon> <AppIcon iconName="app-add-folder" class="color-secondary"></AppIcon>
{{ $t('components.folder.addChildFolder') }} {{ $t('components.folder.addChildFolder') }}
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item <el-dropdown-item
@click.stop="openEditFolder(data)" @click.stop="openEditFolder(data)"
v-if="permissionPrecise.folderManage(data.id)" v-if="permissionPrecise.folderEdit(data.id)"
> >
<AppIcon iconName="app-edit" class="color-secondary"></AppIcon> <AppIcon iconName="app-edit" class="color-secondary"></AppIcon>
{{ $t('common.edit') }} {{ $t('common.edit') }}
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item <el-dropdown-item
@click.stop="openAuthorization(data)" @click.stop="openAuthorization(data)"
v-if="permissionPrecise.folderManage(data.id)" v-if="permissionPrecise.folderAuth(data.id)"
> >
<AppIcon iconName="app-resource-authorization" class="color-secondary"></AppIcon> <AppIcon iconName="app-resource-authorization" class="color-secondary"></AppIcon>
{{ $t('views.system.resourceAuthorization.title') }} {{ $t('views.system.resourceAuthorization.title') }}
@ -86,7 +86,7 @@
divided divided
@click.stop="deleteFolder(data)" @click.stop="deleteFolder(data)"
:disabled="!data.parent_id" :disabled="!data.parent_id"
v-if="permissionPrecise.folderManage(data.id)" v-if="permissionPrecise.folderDelete(data.id)"
> >
<AppIcon iconName="app-delete" class="color-secondary"></AppIcon> <AppIcon iconName="app-delete" class="color-secondary"></AppIcon>
{{ $t('common.delete') }} {{ $t('common.delete') }}
@ -175,11 +175,12 @@ const permissionPrecise = computed(() => {
return permissionMap[resourceType.value!]['workspace'] return permissionMap[resourceType.value!]['workspace']
}) })
const MoreFilledPermission = (node: any) => { const MoreFilledPermission = (node: any, data: any) => {
return ( return (
(node.level !== 3 && permissionPrecise.value.folderCreate()) || (node.level !== 3 && permissionPrecise.value.folderCreate(data.id)) ||
permissionPrecise.value.folderEdit() || permissionPrecise.value.folderEdit(data.id) ||
permissionPrecise.value.folderDelete() permissionPrecise.value.folderDelete(data.id) ||
permissionPrecise.value.folderAuth(data.id)
) )
} }

View File

@ -190,6 +190,8 @@ import permissionMap from '@/permission'
import { loadSharedApi } from '@/utils/dynamics-api/shared-api' import { loadSharedApi } from '@/utils/dynamics-api/shared-api'
const route = useRoute() const route = useRoute()
import useStore from '@/stores' import useStore from '@/stores'
import { hasPermission } from '@/utils/permission/index'
import { PermissionConst, RoleConst } from '@/utils/permission/data'
const { user } = useStore() const { user } = useStore()
const props = defineProps<{ const props = defineProps<{
@ -229,9 +231,30 @@ function getAllFolderIds(data: any) {
return [data.id,...(data.children?.flatMap((child: any) => getAllFolderIds(child)) || [])] return [data.id,...(data.children?.flatMap((child: any) => getAllFolderIds(child)) || [])]
} }
const RESOURCE_PERMISSION_MAP = {
application: PermissionConst.APPLICATION_RESOURCE_AUTHORIZATION.getWorkspacePermissionWorkspaceManageRole,
knowledge: PermissionConst.KNOWLEDGE_RESOURCE_AUTHORIZATION.getWorkspacePermissionWorkspaceManageRole,
tool: PermissionConst.TOOL_RESOURCE_AUTHORIZATION.getWorkspacePermissionWorkspaceManageRole,
}
const resourceAuthorizationOfManager = computed(() => {
return RESOURCE_PERMISSION_MAP[folderType.value]
})
// ManageID // ManageID
function filterHasPermissionFolderIds(folderIds: string[]) { function filterHasPermissionFolderIds(folderIds: string[]) {
return folderIds.filter(id => permissionPrecise.value.folderManage(id)) if (hasPermission(
[
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
resourceAuthorizationOfManager.value
],'OR'
)) {
return folderIds
}
else {
return folderIds.filter(id => permissionPrecise.value.folderManage(id))
}
} }
function confirmSinglePermission() { function confirmSinglePermission() {

View File

@ -15,6 +15,7 @@ const systemManage = {
folderEdit: () => false, folderEdit: () => false,
folderRead: () => false, folderRead: () => false,
folderManage: () => false, folderManage: () => false,
folderAuth: () => false,
export: () => export: () =>
hasPermission( hasPermission(
[ [

View File

@ -13,12 +13,12 @@ const workspace = {
], ],
'OR' 'OR'
), ),
folderCreate: () => folderCreate: (folder_id: string) =>
hasPermission( hasPermission(
[ [
RoleConst.USER.getWorkspaceRole, new ComplexPermission([RoleConst.USER],[PermissionConst.APPLICATION.getApplicationWorkspaceResourcePermission(folder_id)],[],'AND'),
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole, RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
PermissionConst.APPLICATION_CREATE.getWorkspacePermission, PermissionConst.APPLICATION_FOLDER_EDIT.getApplicationWorkspaceResourcePermission(folder_id),
PermissionConst.APPLICATION_CREATE.getWorkspacePermissionWorkspaceManageRole, PermissionConst.APPLICATION_CREATE.getWorkspacePermissionWorkspaceManageRole,
], ],
'OR' 'OR'
@ -29,7 +29,37 @@ const workspace = {
new ComplexPermission([RoleConst.USER],[PermissionConst.APPLICATION.getApplicationWorkspaceResourcePermission(folder_id)],[],'AND'), new ComplexPermission([RoleConst.USER],[PermissionConst.APPLICATION.getApplicationWorkspaceResourcePermission(folder_id)],[],'AND'),
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole, RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
PermissionConst.APPLICATION_FOLDER_READ.getApplicationWorkspaceResourcePermission(folder_id), PermissionConst.APPLICATION_FOLDER_READ.getApplicationWorkspaceResourcePermission(folder_id),
PermissionConst.APPLICATION_FOLDER_READ.getWorkspacePermissionWorkspaceManageRole, PermissionConst.APPLICATION_READ.getWorkspacePermissionWorkspaceManageRole,
],
'OR'
),
folderEdit: (folder_id: string) =>
hasPermission(
[
new ComplexPermission([RoleConst.USER],[PermissionConst.APPLICATION.getApplicationWorkspaceResourcePermission(folder_id)],[],'AND'),
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
PermissionConst.APPLICATION_FOLDER_EDIT.getApplicationWorkspaceResourcePermission(folder_id),
PermissionConst.APPLICATION_EDIT.getWorkspacePermissionWorkspaceManageRole,
],
'OR'
),
folderAuth: (folder_id: string) =>
hasPermission(
[
new ComplexPermission([RoleConst.USER],[PermissionConst.APPLICATION.getApplicationWorkspaceResourcePermission(folder_id)],[],'AND'),
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
PermissionConst.APPLICATION_FOLDER_EDIT.getApplicationWorkspaceResourcePermission(folder_id),
PermissionConst.APPLICATION_RESOURCE_AUTHORIZATION.getWorkspacePermissionWorkspaceManageRole,
],
'OR'
),
folderDelete: (folder_id: string) =>
hasPermission(
[
new ComplexPermission([RoleConst.USER],[PermissionConst.APPLICATION.getApplicationWorkspaceResourcePermission(folder_id)],[],'AND'),
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
PermissionConst.APPLICATION_FOLDER_EDIT.getApplicationWorkspaceResourcePermission(folder_id),
PermissionConst.APPLICATION_DELETE.getWorkspacePermissionWorkspaceManageRole
], ],
'OR' 'OR'
), ),
@ -73,16 +103,6 @@ const workspace = {
], ],
'OR' 'OR'
), ),
folderEdit: () =>
hasPermission(
[
RoleConst.USER.getWorkspaceRole,
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
PermissionConst.APPLICATION_EDIT.getWorkspacePermissionWorkspaceManageRole,
PermissionConst.APPLICATION_EDIT.getWorkspacePermission
],
'OR'
),
export: (source_id:string) => export: (source_id:string) =>
hasPermission( hasPermission(
[ [
@ -103,16 +123,7 @@ const workspace = {
], ],
'OR' 'OR'
), ),
folderDelete: () =>
hasPermission(
[
RoleConst.USER.getWorkspaceRole,
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
PermissionConst.APPLICATION_DELETE.getWorkspacePermissionWorkspaceManageRole,
PermissionConst.APPLICATION_DELETE.getWorkspacePermission
],
'OR'
),
overview_embed: (source_id:string) => overview_embed: (source_id:string) =>
hasPermission( hasPermission(
[ [

View File

@ -163,6 +163,7 @@ const systemManage = {
folderManage: () => false, folderManage: () => false,
folderCreate: () => false, folderCreate: () => false,
folderEdit: () => false, folderEdit: () => false,
folderAuth: () => false,
folderDelete: () => false, folderDelete: () => false,
hit_test: () => hit_test: () =>
hasPermission([ hasPermission([

View File

@ -189,6 +189,7 @@ const share = {
folderManage: () => false, folderManage: () => false,
folderCreate: () => false, folderCreate: () => false,
folderEdit: () => false, folderEdit: () => false,
folderAuth: () => false,
folderDelete: () => false, folderDelete: () => false,
hit_test: () => false, hit_test: () => false,
} }

View File

@ -37,6 +37,7 @@ const workspaceShare = {
folderManage: () => false, folderManage: () => false,
folderCreate: () => false, folderCreate: () => false,
folderEdit: () => false, folderEdit: () => false,
folderAuth: () => false,
folderDelete: () => false, folderDelete: () => false,
hit_test: () => false, hit_test: () => false,
} }

View File

@ -20,17 +20,56 @@ const workspace = {
], ],
'OR', 'OR',
), ),
folderRead: () => true, folderRead: (folder_id: string) =>
hasPermission(
[
new ComplexPermission([RoleConst.USER],[PermissionConst.KNOWLEDGE.getKnowledgeWorkspaceResourcePermission(folder_id)],[],'AND'),
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
PermissionConst.KNOWLEDGE_FOLDER_READ.getKnowledgeWorkspaceResourcePermission(folder_id),
PermissionConst.KNOWLEDGE_READ.getWorkspacePermissionWorkspaceManageRole,
],
'OR'
),
folderManage: () => true, folderManage: () => true,
folderCreate: () => folderAuth: (folder_id: string) =>
hasPermission( hasPermission(
[ [
RoleConst.USER.getWorkspaceRole, new ComplexPermission([RoleConst.USER],[PermissionConst.KNOWLEDGE.getKnowledgeWorkspaceResourcePermission(folder_id)],[],'AND'),
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole, RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
PermissionConst.KNOWLEDGE_CREATE.getWorkspacePermission, PermissionConst.KNOWLEDGE_FOLDER_EDIT.getKnowledgeWorkspaceResourcePermission(folder_id),
PermissionConst.KNOWLEDGE_CREATE.getWorkspacePermissionWorkspaceManageRole, PermissionConst.KNOWLEDGE_RESOURCE_AUTHORIZATION.getWorkspacePermissionWorkspaceManageRole,
], ],
'OR', 'OR'
),
folderCreate: (folder_id: string) =>
hasPermission(
[
new ComplexPermission([RoleConst.USER],[PermissionConst.KNOWLEDGE.getKnowledgeWorkspaceResourcePermission(folder_id)],[],'AND'),
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
PermissionConst.KNOWLEDGE_FOLDER_EDIT.getKnowledgeWorkspaceResourcePermission(folder_id),
PermissionConst.KNOWLEDGE_CREATE.getWorkspacePermissionWorkspaceManageRole,
],
'OR'
),
folderDelete: (folder_id: string) =>
hasPermission(
[
new ComplexPermission([RoleConst.USER],[PermissionConst.KNOWLEDGE.getKnowledgeWorkspaceResourcePermission(folder_id)],[],'AND'),
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
PermissionConst.KNOWLEDGE_FOLDER_EDIT.getKnowledgeWorkspaceResourcePermission(folder_id),
PermissionConst.KNOWLEDGE_DELETE.getWorkspacePermissionWorkspaceManageRole,
],
'OR'
),
folderEdit: (folder_id: string) =>
hasPermission(
[
new ComplexPermission([RoleConst.USER],[PermissionConst.KNOWLEDGE.getKnowledgeWorkspaceResourcePermission(folder_id)],[],'AND'),
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
PermissionConst.KNOWLEDGE_FOLDER_EDIT.getKnowledgeWorkspaceResourcePermission(folder_id),
PermissionConst.KNOWLEDGE_EDIT.getWorkspacePermissionWorkspaceManageRole,
],
'OR'
), ),
sync: (source_id:string) => sync: (source_id:string) =>
hasPermission( hasPermission(
@ -82,16 +121,6 @@ const workspace = {
], ],
'OR', 'OR',
), ),
folderEdit: () =>
hasPermission(
[
RoleConst.USER.getWorkspaceRole,
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
PermissionConst.KNOWLEDGE_EDIT.getWorkspacePermission,
PermissionConst.KNOWLEDGE_EDIT.getWorkspacePermissionWorkspaceManageRole,
],
'OR',
),
export: (source_id:string) => export: (source_id:string) =>
hasPermission( hasPermission(
[ [
@ -112,16 +141,6 @@ const workspace = {
], ],
'OR', 'OR',
), ),
folderDelete: () =>
hasPermission(
[
RoleConst.USER.getWorkspaceRole,
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
PermissionConst.KNOWLEDGE_DELETE.getWorkspacePermission,
PermissionConst.KNOWLEDGE_DELETE.getWorkspacePermissionWorkspaceManageRole,
],
'OR',
),
doc_read: () => false, doc_read: () => false,
doc_create: (source_id:string) => doc_create: (source_id:string) =>
hasPermission( hasPermission(

View File

@ -27,6 +27,7 @@ const systemManage = {
folderManage: () => false, folderManage: () => false,
folderCreate: () => false, folderCreate: () => false,
folderEdit: () => false, folderEdit: () => false,
folderAuth: () => false,
folderDelete: () => false, folderDelete: () => false,
} }

View File

@ -40,6 +40,7 @@ const share = {
folderManage: () => false, folderManage: () => false,
folderCreate: () => false, folderCreate: () => false,
folderEdit: () => false, folderEdit: () => false,
folderAuth: () => false,
folderDelete: () => false, folderDelete: () => false,
} }
export default share export default share

View File

@ -22,6 +22,7 @@ const workspace = {
), ),
folderRead: () => true, folderRead: () => true,
folderManage: () => true, folderManage: () => true,
folderAuth: () => false,
folderCreate: () => folderCreate: () =>
hasPermission( hasPermission(
[ [

View File

@ -78,6 +78,7 @@ const systemManage = {
folderManage: () => false, folderManage: () => false,
folderCreate: () => false, folderCreate: () => false,
folderEdit: () => false, folderEdit: () => false,
folderAuth: () => false,
folderDelete: () => false, folderDelete: () => false,
} }

View File

@ -82,6 +82,7 @@ const share = {
folderManage: () => false, folderManage: () => false,
folderCreate: () => false, folderCreate: () => false,
folderEdit: () => false, folderEdit: () => false,
folderAuth: () => false,
folderDelete: () => false, folderDelete: () => false,
} }
export default share export default share

View File

@ -40,18 +40,57 @@ const workspace = {
], ],
'OR' 'OR'
), ),
folderRead: () => true, folderCreate: (folder_id: string) =>
folderManage: () => true, hasPermission(
folderCreate: () => [
hasPermission( new ComplexPermission([RoleConst.USER],[PermissionConst.TOOL.getToolWorkspaceResourcePermission(folder_id)],[],'AND'),
[ RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole, PermissionConst.TOOL_FOLDER_EDIT.getToolWorkspaceResourcePermission(folder_id),
RoleConst.USER.getWorkspaceRole, PermissionConst.TOOL_CREATE.getWorkspacePermissionWorkspaceManageRole,
PermissionConst.TOOL_CREATE.getWorkspacePermission, ],
PermissionConst.TOOL_CREATE.getWorkspacePermissionWorkspaceManageRole 'OR'
],
'OR'
), ),
folderRead: (folder_id: string) =>
hasPermission(
[
new ComplexPermission([RoleConst.USER],[PermissionConst.TOOL.getToolWorkspaceResourcePermission(folder_id)],[],'AND'),
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
PermissionConst.TOOL_FOLDER_READ.getToolWorkspaceResourcePermission(folder_id),
PermissionConst.TOOL_READ.getWorkspacePermissionWorkspaceManageRole,
],
'OR'
),
folderEdit: (folder_id: string) =>
hasPermission(
[
new ComplexPermission([RoleConst.USER],[PermissionConst.TOOL.getToolWorkspaceResourcePermission(folder_id)],[],'AND'),
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
PermissionConst.TOOL_FOLDER_EDIT.getToolWorkspaceResourcePermission(folder_id),
PermissionConst.TOOL_EDIT.getWorkspacePermissionWorkspaceManageRole,
],
'OR'
),
folderAuth: (folder_id: string) =>
hasPermission(
[
new ComplexPermission([RoleConst.USER],[PermissionConst.TOOL.getToolWorkspaceResourcePermission(folder_id)],[],'AND'),
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
PermissionConst.TOOL_FOLDER_EDIT.getToolWorkspaceResourcePermission(folder_id),
PermissionConst.TOOL_RESOURCE_AUTHORIZATION.getWorkspacePermissionWorkspaceManageRole,
],
'OR'
),
folderDelete: (folder_id: string) =>
hasPermission(
[
new ComplexPermission([RoleConst.USER],[PermissionConst.TOOL.getToolWorkspaceResourcePermission(folder_id)],[],'AND'),
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
PermissionConst.TOOL_FOLDER_EDIT.getToolWorkspaceResourcePermission(folder_id),
PermissionConst.TOOL_DELETE.getWorkspacePermissionWorkspaceManageRole,
],
'OR'
),
folderManage: () => true,
delete: (source_id:string) => delete: (source_id:string) =>
hasPermission( hasPermission(
[ [
@ -62,16 +101,6 @@ const workspace = {
], ],
'OR', 'OR',
), ),
folderDelete: () =>
hasPermission(
[
RoleConst.USER.getWorkspaceRole,
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
PermissionConst.TOOL_DELETE.getWorkspacePermission,
PermissionConst.TOOL_DELETE.getWorkspacePermissionWorkspaceManageRole
],
'OR',
),
switch: (source_id:string) => switch: (source_id:string) =>
hasPermission( hasPermission(
[ [
@ -92,16 +121,6 @@ const workspace = {
], ],
'OR' 'OR'
), ),
folderEdit: () =>
hasPermission(
[
RoleConst.USER.getWorkspaceRole,
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
PermissionConst.TOOL_EDIT.getWorkspacePermission,
PermissionConst.TOOL_EDIT.getWorkspacePermissionWorkspaceManageRole
],
'OR',
),
copy: (source_id:string) => copy: (source_id:string) =>
hasPermission( hasPermission(
[ [