feat: Folder button permission (#3520)
Co-authored-by: zhangzhanwei <zhanwei.zhang@fit2cloud.com>
This commit is contained in:
parent
49d40bb480
commit
1482d8674b
@ -57,12 +57,14 @@
|
|||||||
<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"
|
v-if="node.level !== 3 && permissionPrecise.folderCreate()"
|
||||||
>
|
>
|
||||||
<AppIcon iconName="app-add-folder"></AppIcon>
|
<AppIcon iconName="app-add-folder"></AppIcon>
|
||||||
{{ $t('components.folder.addChildFolder') }}
|
{{ $t('components.folder.addChildFolder') }}
|
||||||
</el-dropdown-item>
|
</el-dropdown-item>
|
||||||
<el-dropdown-item @click.stop="openEditFolder(data)">
|
<el-dropdown-item @click.stop="openEditFolder(data)"
|
||||||
|
v-if="permissionPrecise.folderEdit()"
|
||||||
|
>
|
||||||
<el-icon><EditPen /></el-icon>
|
<el-icon><EditPen /></el-icon>
|
||||||
{{ $t('common.edit') }}
|
{{ $t('common.edit') }}
|
||||||
</el-dropdown-item>
|
</el-dropdown-item>
|
||||||
@ -70,6 +72,7 @@
|
|||||||
divided
|
divided
|
||||||
@click.stop="deleteFolder(data)"
|
@click.stop="deleteFolder(data)"
|
||||||
:disabled="!data.parent_id"
|
:disabled="!data.parent_id"
|
||||||
|
v-if="permissionPrecise.folderDelete()"
|
||||||
>
|
>
|
||||||
<el-icon><Delete /></el-icon>
|
<el-icon><Delete /></el-icon>
|
||||||
{{ $t('common.delete') }}
|
{{ $t('common.delete') }}
|
||||||
@ -88,7 +91,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { ref, watch } from 'vue'
|
import { computed, ref, watch } from 'vue'
|
||||||
import { onBeforeRouteLeave } from 'vue-router'
|
import { onBeforeRouteLeave } from 'vue-router'
|
||||||
import type { TreeInstance } from 'element-plus'
|
import type { TreeInstance } from 'element-plus'
|
||||||
import CreateFolderDialog from '@/components/folder-tree/CreateFolderDialog.vue'
|
import CreateFolderDialog from '@/components/folder-tree/CreateFolderDialog.vue'
|
||||||
@ -99,6 +102,7 @@ import { hasPermission } from '@/utils/permission/index'
|
|||||||
import useStore from '@/stores'
|
import useStore from '@/stores'
|
||||||
import { TreeToFlatten } from '@/utils/array'
|
import { TreeToFlatten } from '@/utils/array'
|
||||||
import { MsgConfirm } from '@/utils/message'
|
import { MsgConfirm } from '@/utils/message'
|
||||||
|
import permissionMap from '@/permission'
|
||||||
|
|
||||||
defineOptions({ name: 'FolderTree' })
|
defineOptions({ name: 'FolderTree' })
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
@ -131,6 +135,21 @@ const props = defineProps({
|
|||||||
default: () => ({}),
|
default: () => ({}),
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
const resourceType = computed(() => {
|
||||||
|
if (props.source === 'APPLICATION') {
|
||||||
|
return 'application'
|
||||||
|
} else if (props.source === 'KNOWLEDGE') {
|
||||||
|
return 'knowledge'
|
||||||
|
} else if (props.source === 'MODEL') {
|
||||||
|
return 'model'
|
||||||
|
} else if (props.source === 'TOOL') {
|
||||||
|
return 'tool'
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
const permissionPrecise = computed(() => {
|
||||||
|
return permissionMap[resourceType.value!]['workspace']
|
||||||
|
})
|
||||||
|
|
||||||
const { folder } = useStore()
|
const { folder } = useStore()
|
||||||
onBeforeRouteLeave((to, from) => {
|
onBeforeRouteLeave((to, from) => {
|
||||||
|
|||||||
@ -13,6 +13,16 @@ const workspace = {
|
|||||||
],
|
],
|
||||||
'OR'
|
'OR'
|
||||||
),
|
),
|
||||||
|
folderCreate: () =>
|
||||||
|
hasPermission(
|
||||||
|
[
|
||||||
|
RoleConst.USER.getWorkspaceRole,
|
||||||
|
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
|
||||||
|
PermissionConst.APPLICATION_CREATE.getWorkspacePermission,
|
||||||
|
PermissionConst.APPLICATION_CREATE.getWorkspacePermissionWorkspaceManageRole,
|
||||||
|
],
|
||||||
|
'OR'
|
||||||
|
),
|
||||||
edit: (source_id:string) =>
|
edit: (source_id:string) =>
|
||||||
hasPermission(
|
hasPermission(
|
||||||
[
|
[
|
||||||
@ -23,6 +33,16 @@ 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(
|
||||||
[
|
[
|
||||||
@ -43,6 +63,16 @@ 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(
|
||||||
[
|
[
|
||||||
|
|||||||
@ -16,7 +16,7 @@ const systemManage = {
|
|||||||
sync: () => false,
|
sync: () => false,
|
||||||
vector: () => false,
|
vector: () => false,
|
||||||
generate: () => false,
|
generate: () => false,
|
||||||
setting: () => false,
|
edit: () => false,
|
||||||
export: () => false,
|
export: () => false,
|
||||||
delete: () => false,
|
delete: () => false,
|
||||||
|
|
||||||
@ -35,6 +35,10 @@ const systemManage = {
|
|||||||
problem_create: () => false,
|
problem_create: () => false,
|
||||||
problem_relate: () => false,
|
problem_relate: () => false,
|
||||||
problem_delete: () => false,
|
problem_delete: () => false,
|
||||||
|
|
||||||
|
folderCreate: () => false,
|
||||||
|
folderEdit: () => false,
|
||||||
|
folderDelete: () => false,
|
||||||
}
|
}
|
||||||
|
|
||||||
export default systemManage
|
export default systemManage
|
||||||
|
|||||||
@ -35,7 +35,7 @@ const share = {
|
|||||||
],
|
],
|
||||||
'OR'
|
'OR'
|
||||||
),
|
),
|
||||||
setting: () =>
|
edit: () =>
|
||||||
hasPermission (
|
hasPermission (
|
||||||
[
|
[
|
||||||
RoleConst.ADMIN,
|
RoleConst.ADMIN,
|
||||||
@ -165,6 +165,8 @@ const share = {
|
|||||||
],
|
],
|
||||||
'OR'
|
'OR'
|
||||||
),
|
),
|
||||||
|
folderCreate: () => false,
|
||||||
|
folderEdit: () => false,
|
||||||
|
folderDelete: () => false,
|
||||||
}
|
}
|
||||||
export default share
|
export default share
|
||||||
|
|||||||
@ -7,7 +7,7 @@ const workspaceShare = {
|
|||||||
sync: () => false,
|
sync: () => false,
|
||||||
vector: () => false,
|
vector: () => false,
|
||||||
generate: () => false,
|
generate: () => false,
|
||||||
setting: () => false,
|
edit: () => false,
|
||||||
export: () => false,
|
export: () => false,
|
||||||
delete: () => false,
|
delete: () => false,
|
||||||
|
|
||||||
@ -26,6 +26,10 @@ const workspaceShare = {
|
|||||||
problem_create: () => false,
|
problem_create: () => false,
|
||||||
problem_relate: () => false,
|
problem_relate: () => false,
|
||||||
problem_delete: () => false,
|
problem_delete: () => false,
|
||||||
|
|
||||||
|
folderCreate: () => false,
|
||||||
|
folderEdit: () => false,
|
||||||
|
folderDelete: () => false,
|
||||||
}
|
}
|
||||||
|
|
||||||
export default workspaceShare
|
export default workspaceShare
|
||||||
@ -20,6 +20,16 @@ const workspace = {
|
|||||||
],
|
],
|
||||||
'OR',
|
'OR',
|
||||||
),
|
),
|
||||||
|
folderCreate: () =>
|
||||||
|
hasPermission(
|
||||||
|
[
|
||||||
|
RoleConst.USER.getWorkspaceRole,
|
||||||
|
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
|
||||||
|
PermissionConst.KNOWLEDGE_CREATE.getWorkspacePermission,
|
||||||
|
PermissionConst.KNOWLEDGE_CREATE.getWorkspacePermissionWorkspaceManageRole,
|
||||||
|
],
|
||||||
|
'OR',
|
||||||
|
),
|
||||||
sync: (source_id:string) =>
|
sync: (source_id:string) =>
|
||||||
hasPermission(
|
hasPermission(
|
||||||
[
|
[
|
||||||
@ -50,7 +60,7 @@ const workspace = {
|
|||||||
],
|
],
|
||||||
'OR',
|
'OR',
|
||||||
),
|
),
|
||||||
setting: (source_id:string) =>
|
edit: (source_id:string) =>
|
||||||
hasPermission(
|
hasPermission(
|
||||||
[
|
[
|
||||||
new ComplexPermission([RoleConst.USER],[PermissionConst.KNOWLEDGE.getKnowledgeWorkspaceResourcePermission(source_id)],[],'AND'),
|
new ComplexPermission([RoleConst.USER],[PermissionConst.KNOWLEDGE.getKnowledgeWorkspaceResourcePermission(source_id)],[],'AND'),
|
||||||
@ -60,6 +70,16 @@ 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(
|
||||||
[
|
[
|
||||||
@ -80,6 +100,16 @@ const workspace = {
|
|||||||
],
|
],
|
||||||
'OR',
|
'OR',
|
||||||
),
|
),
|
||||||
|
folderDelete: () =>
|
||||||
|
hasPermission(
|
||||||
|
[
|
||||||
|
RoleConst.USER.getWorkspaceRole,
|
||||||
|
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
|
||||||
|
PermissionConst.KNOWLEDGE_DELETE.getWorkspacePermission,
|
||||||
|
PermissionConst.KNOWLEDGE_DELETE.getWorkspacePermissionWorkspaceManageRole,
|
||||||
|
],
|
||||||
|
'OR',
|
||||||
|
),
|
||||||
doc_create: (source_id:string) =>
|
doc_create: (source_id:string) =>
|
||||||
hasPermission(
|
hasPermission(
|
||||||
[
|
[
|
||||||
|
|||||||
@ -12,10 +12,14 @@ const systemManage = {
|
|||||||
),
|
),
|
||||||
'OR',
|
'OR',
|
||||||
),
|
),
|
||||||
addModel: () => false,
|
create: () => false,
|
||||||
modify: () => false,
|
modify: () => false,
|
||||||
paramSetting: () => false,
|
paramSetting: () => false,
|
||||||
delete: () => false,
|
delete: () => false,
|
||||||
|
|
||||||
|
folderCreate: () => false,
|
||||||
|
folderEdit: () => false,
|
||||||
|
folderDelete: () => false,
|
||||||
}
|
}
|
||||||
|
|
||||||
export default systemManage
|
export default systemManage
|
||||||
|
|||||||
@ -3,7 +3,7 @@ import { ComplexPermission } from '@/utils/permission/type'
|
|||||||
import { EditionConst, PermissionConst, RoleConst } from '@/utils/permission/data'
|
import { EditionConst, PermissionConst, RoleConst } from '@/utils/permission/data'
|
||||||
const share = {
|
const share = {
|
||||||
is_share: () => false,
|
is_share: () => false,
|
||||||
addModel: () =>
|
create: () =>
|
||||||
hasPermission(
|
hasPermission(
|
||||||
[
|
[
|
||||||
RoleConst.ADMIN,
|
RoleConst.ADMIN,
|
||||||
@ -35,5 +35,8 @@ const share = {
|
|||||||
],
|
],
|
||||||
'OR',
|
'OR',
|
||||||
),
|
),
|
||||||
|
folderCreate: () => false,
|
||||||
|
folderEdit: () => false,
|
||||||
|
folderDelete: () => false,
|
||||||
}
|
}
|
||||||
export default share
|
export default share
|
||||||
|
|||||||
@ -10,7 +10,17 @@ const workspace = {
|
|||||||
[EditionConst.IS_EE],'OR'),
|
[EditionConst.IS_EE],'OR'),
|
||||||
'OR',
|
'OR',
|
||||||
),
|
),
|
||||||
addModel: () =>
|
create: () =>
|
||||||
|
hasPermission(
|
||||||
|
[
|
||||||
|
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
|
||||||
|
RoleConst.USER.getWorkspaceRole,
|
||||||
|
PermissionConst.MODEL_CREATE.getWorkspacePermission,
|
||||||
|
PermissionConst.MODEL_CREATE.getWorkspacePermissionWorkspaceManageRole
|
||||||
|
],
|
||||||
|
'OR'
|
||||||
|
),
|
||||||
|
folderCreate: () =>
|
||||||
hasPermission(
|
hasPermission(
|
||||||
[
|
[
|
||||||
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
|
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
|
||||||
@ -30,6 +40,16 @@ const workspace = {
|
|||||||
],
|
],
|
||||||
'OR'
|
'OR'
|
||||||
),
|
),
|
||||||
|
folderEdit: () =>
|
||||||
|
hasPermission(
|
||||||
|
[
|
||||||
|
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
|
||||||
|
RoleConst.USER.getWorkspaceRole,
|
||||||
|
PermissionConst.MODEL_EDIT.getWorkspacePermission,
|
||||||
|
PermissionConst.MODEL_EDIT.getWorkspacePermissionWorkspaceManageRole
|
||||||
|
],
|
||||||
|
'OR'
|
||||||
|
),
|
||||||
paramSetting: (source_id:string) =>
|
paramSetting: (source_id:string) =>
|
||||||
hasPermission(
|
hasPermission(
|
||||||
[
|
[
|
||||||
@ -50,6 +70,16 @@ const workspace = {
|
|||||||
],
|
],
|
||||||
'OR'
|
'OR'
|
||||||
),
|
),
|
||||||
|
folderDelete: () =>
|
||||||
|
hasPermission(
|
||||||
|
[
|
||||||
|
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
|
||||||
|
RoleConst.USER.getWorkspaceRole,
|
||||||
|
PermissionConst.MODEL_DELETE.getWorkspacePermission,
|
||||||
|
PermissionConst.MODEL_DELETE.getWorkspacePermissionWorkspaceManageRole
|
||||||
|
],
|
||||||
|
'OR'
|
||||||
|
),
|
||||||
}
|
}
|
||||||
|
|
||||||
export default workspace
|
export default workspace
|
||||||
|
|||||||
@ -20,6 +20,10 @@ const systemManage = {
|
|||||||
export: () => false,
|
export: () => false,
|
||||||
debug: () => false,
|
debug: () => false,
|
||||||
|
|
||||||
|
folderCreate: () => false,
|
||||||
|
folderEdit: () => false,
|
||||||
|
folderDelete: () => false,
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export default systemManage
|
export default systemManage
|
||||||
|
|||||||
@ -59,5 +59,9 @@ const share = {
|
|||||||
],
|
],
|
||||||
'OR',
|
'OR',
|
||||||
),
|
),
|
||||||
|
|
||||||
|
folderCreate: () => false,
|
||||||
|
folderEdit: () => false,
|
||||||
|
folderDelete: () => false,
|
||||||
}
|
}
|
||||||
export default share
|
export default share
|
||||||
|
|||||||
@ -10,7 +10,6 @@ const workspace = {
|
|||||||
[EditionConst.IS_EE],'OR'),
|
[EditionConst.IS_EE],'OR'),
|
||||||
'OR',
|
'OR',
|
||||||
),
|
),
|
||||||
|
|
||||||
create: () =>
|
create: () =>
|
||||||
hasPermission(
|
hasPermission(
|
||||||
[
|
[
|
||||||
@ -21,6 +20,16 @@ const workspace = {
|
|||||||
],
|
],
|
||||||
'OR'
|
'OR'
|
||||||
),
|
),
|
||||||
|
folderCreate: () =>
|
||||||
|
hasPermission(
|
||||||
|
[
|
||||||
|
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
|
||||||
|
RoleConst.USER.getWorkspaceRole,
|
||||||
|
PermissionConst.TOOL_CREATE.getWorkspacePermission,
|
||||||
|
PermissionConst.TOOL_CREATE.getWorkspacePermissionWorkspaceManageRole
|
||||||
|
],
|
||||||
|
'OR'
|
||||||
|
),
|
||||||
delete: (source_id:string) =>
|
delete: (source_id:string) =>
|
||||||
hasPermission(
|
hasPermission(
|
||||||
[
|
[
|
||||||
@ -31,6 +40,16 @@ 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(
|
||||||
[
|
[
|
||||||
@ -51,6 +70,16 @@ 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(
|
||||||
[
|
[
|
||||||
|
|||||||
@ -255,7 +255,7 @@
|
|||||||
|
|
||||||
<el-dropdown-item
|
<el-dropdown-item
|
||||||
@click.stop="openMoveToDialog(item)"
|
@click.stop="openMoveToDialog(item)"
|
||||||
v-if="permissionPrecise.setting(item.id) && apiType === 'workspace'"
|
v-if="permissionPrecise.edit(item.id) && apiType === 'workspace'"
|
||||||
>
|
>
|
||||||
<AppIcon iconName="app-migrate"></AppIcon>
|
<AppIcon iconName="app-migrate"></AppIcon>
|
||||||
{{ $t('common.moveTo') }}
|
{{ $t('common.moveTo') }}
|
||||||
@ -268,7 +268,7 @@
|
|||||||
path: `/knowledge/${item.id}/${folder.currentFolder.id || 'shared'}/setting`,
|
path: `/knowledge/${item.id}/${folder.currentFolder.id || 'shared'}/setting`,
|
||||||
})
|
})
|
||||||
"
|
"
|
||||||
v-if="permissionPrecise.setting(item.id)"
|
v-if="permissionPrecise.edit(item.id)"
|
||||||
>
|
>
|
||||||
{{ $t('common.setting') }}
|
{{ $t('common.setting') }}
|
||||||
</el-dropdown-item>
|
</el-dropdown-item>
|
||||||
|
|||||||
@ -59,7 +59,7 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</div>
|
</div>
|
||||||
<el-button
|
<el-button
|
||||||
v-if="!isShared && permissionPrecise.addModel()"
|
v-if="!isShared && permissionPrecise.create()"
|
||||||
class="ml-16"
|
class="ml-16"
|
||||||
type="primary"
|
type="primary"
|
||||||
@click="openCreateModel(active_provider)"
|
@click="openCreateModel(active_provider)"
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user