mirror of
https://github.com/1Panel-dev/MaxKB.git
synced 2025-12-26 10:12:51 +00:00
feat: Folder button permission (#3520)
Some checks are pending
sync2gitee / repo-sync (push) Waiting to run
Some checks are pending
sync2gitee / repo-sync (push) Waiting to run
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-item
|
||||
@click.stop="openCreateFolder(data)"
|
||||
v-if="node.level !== 3"
|
||||
v-if="node.level !== 3 && permissionPrecise.folderCreate()"
|
||||
>
|
||||
<AppIcon iconName="app-add-folder"></AppIcon>
|
||||
{{ $t('components.folder.addChildFolder') }}
|
||||
</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>
|
||||
{{ $t('common.edit') }}
|
||||
</el-dropdown-item>
|
||||
|
|
@ -70,6 +72,7 @@
|
|||
divided
|
||||
@click.stop="deleteFolder(data)"
|
||||
:disabled="!data.parent_id"
|
||||
v-if="permissionPrecise.folderDelete()"
|
||||
>
|
||||
<el-icon><Delete /></el-icon>
|
||||
{{ $t('common.delete') }}
|
||||
|
|
@ -88,7 +91,7 @@
|
|||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { ref, watch } from 'vue'
|
||||
import { computed, ref, watch } from 'vue'
|
||||
import { onBeforeRouteLeave } from 'vue-router'
|
||||
import type { TreeInstance } from 'element-plus'
|
||||
import CreateFolderDialog from '@/components/folder-tree/CreateFolderDialog.vue'
|
||||
|
|
@ -99,6 +102,7 @@ import { hasPermission } from '@/utils/permission/index'
|
|||
import useStore from '@/stores'
|
||||
import { TreeToFlatten } from '@/utils/array'
|
||||
import { MsgConfirm } from '@/utils/message'
|
||||
import permissionMap from '@/permission'
|
||||
|
||||
defineOptions({ name: 'FolderTree' })
|
||||
const props = defineProps({
|
||||
|
|
@ -131,6 +135,21 @@ const props = defineProps({
|
|||
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()
|
||||
onBeforeRouteLeave((to, from) => {
|
||||
|
|
|
|||
|
|
@ -13,6 +13,16 @@ const workspace = {
|
|||
],
|
||||
'OR'
|
||||
),
|
||||
folderCreate: () =>
|
||||
hasPermission(
|
||||
[
|
||||
RoleConst.USER.getWorkspaceRole,
|
||||
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
|
||||
PermissionConst.APPLICATION_CREATE.getWorkspacePermission,
|
||||
PermissionConst.APPLICATION_CREATE.getWorkspacePermissionWorkspaceManageRole,
|
||||
],
|
||||
'OR'
|
||||
),
|
||||
edit: (source_id:string) =>
|
||||
hasPermission(
|
||||
[
|
||||
|
|
@ -23,6 +33,16 @@ const workspace = {
|
|||
],
|
||||
'OR'
|
||||
),
|
||||
folderEdit: () =>
|
||||
hasPermission(
|
||||
[
|
||||
RoleConst.USER.getWorkspaceRole,
|
||||
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
|
||||
PermissionConst.APPLICATION_EDIT.getWorkspacePermissionWorkspaceManageRole,
|
||||
PermissionConst.APPLICATION_EDIT.getWorkspacePermission
|
||||
],
|
||||
'OR'
|
||||
),
|
||||
export: (source_id:string) =>
|
||||
hasPermission(
|
||||
[
|
||||
|
|
@ -43,6 +63,16 @@ const workspace = {
|
|||
],
|
||||
'OR'
|
||||
),
|
||||
folderDelete: () =>
|
||||
hasPermission(
|
||||
[
|
||||
RoleConst.USER.getWorkspaceRole,
|
||||
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
|
||||
PermissionConst.APPLICATION_DELETE.getWorkspacePermissionWorkspaceManageRole,
|
||||
PermissionConst.APPLICATION_DELETE.getWorkspacePermission
|
||||
],
|
||||
'OR'
|
||||
),
|
||||
overview_embed: (source_id:string) =>
|
||||
hasPermission(
|
||||
[
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ const systemManage = {
|
|||
sync: () => false,
|
||||
vector: () => false,
|
||||
generate: () => false,
|
||||
setting: () => false,
|
||||
edit: () => false,
|
||||
export: () => false,
|
||||
delete: () => false,
|
||||
|
||||
|
|
@ -35,6 +35,10 @@ const systemManage = {
|
|||
problem_create: () => false,
|
||||
problem_relate: () => false,
|
||||
problem_delete: () => false,
|
||||
|
||||
folderCreate: () => false,
|
||||
folderEdit: () => false,
|
||||
folderDelete: () => false,
|
||||
}
|
||||
|
||||
export default systemManage
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ const share = {
|
|||
],
|
||||
'OR'
|
||||
),
|
||||
setting: () =>
|
||||
edit: () =>
|
||||
hasPermission (
|
||||
[
|
||||
RoleConst.ADMIN,
|
||||
|
|
@ -165,6 +165,8 @@ const share = {
|
|||
],
|
||||
'OR'
|
||||
),
|
||||
|
||||
folderCreate: () => false,
|
||||
folderEdit: () => false,
|
||||
folderDelete: () => false,
|
||||
}
|
||||
export default share
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ const workspaceShare = {
|
|||
sync: () => false,
|
||||
vector: () => false,
|
||||
generate: () => false,
|
||||
setting: () => false,
|
||||
edit: () => false,
|
||||
export: () => false,
|
||||
delete: () => false,
|
||||
|
||||
|
|
@ -26,6 +26,10 @@ const workspaceShare = {
|
|||
problem_create: () => false,
|
||||
problem_relate: () => false,
|
||||
problem_delete: () => false,
|
||||
|
||||
folderCreate: () => false,
|
||||
folderEdit: () => false,
|
||||
folderDelete: () => false,
|
||||
}
|
||||
|
||||
export default workspaceShare
|
||||
export default workspaceShare
|
||||
|
|
|
|||
|
|
@ -20,6 +20,16 @@ const workspace = {
|
|||
],
|
||||
'OR',
|
||||
),
|
||||
folderCreate: () =>
|
||||
hasPermission(
|
||||
[
|
||||
RoleConst.USER.getWorkspaceRole,
|
||||
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
|
||||
PermissionConst.KNOWLEDGE_CREATE.getWorkspacePermission,
|
||||
PermissionConst.KNOWLEDGE_CREATE.getWorkspacePermissionWorkspaceManageRole,
|
||||
],
|
||||
'OR',
|
||||
),
|
||||
sync: (source_id:string) =>
|
||||
hasPermission(
|
||||
[
|
||||
|
|
@ -50,7 +60,7 @@ const workspace = {
|
|||
],
|
||||
'OR',
|
||||
),
|
||||
setting: (source_id:string) =>
|
||||
edit: (source_id:string) =>
|
||||
hasPermission(
|
||||
[
|
||||
new ComplexPermission([RoleConst.USER],[PermissionConst.KNOWLEDGE.getKnowledgeWorkspaceResourcePermission(source_id)],[],'AND'),
|
||||
|
|
@ -60,6 +70,16 @@ const workspace = {
|
|||
],
|
||||
'OR',
|
||||
),
|
||||
folderEdit: () =>
|
||||
hasPermission(
|
||||
[
|
||||
RoleConst.USER.getWorkspaceRole,
|
||||
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
|
||||
PermissionConst.KNOWLEDGE_EDIT.getWorkspacePermission,
|
||||
PermissionConst.KNOWLEDGE_EDIT.getWorkspacePermissionWorkspaceManageRole,
|
||||
],
|
||||
'OR',
|
||||
),
|
||||
export: (source_id:string) =>
|
||||
hasPermission(
|
||||
[
|
||||
|
|
@ -80,6 +100,16 @@ const workspace = {
|
|||
],
|
||||
'OR',
|
||||
),
|
||||
folderDelete: () =>
|
||||
hasPermission(
|
||||
[
|
||||
RoleConst.USER.getWorkspaceRole,
|
||||
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
|
||||
PermissionConst.KNOWLEDGE_DELETE.getWorkspacePermission,
|
||||
PermissionConst.KNOWLEDGE_DELETE.getWorkspacePermissionWorkspaceManageRole,
|
||||
],
|
||||
'OR',
|
||||
),
|
||||
doc_create: (source_id:string) =>
|
||||
hasPermission(
|
||||
[
|
||||
|
|
|
|||
|
|
@ -12,10 +12,14 @@ const systemManage = {
|
|||
),
|
||||
'OR',
|
||||
),
|
||||
addModel: () => false,
|
||||
create: () => false,
|
||||
modify: () => false,
|
||||
paramSetting: () => false,
|
||||
delete: () => false,
|
||||
|
||||
folderCreate: () => false,
|
||||
folderEdit: () => false,
|
||||
folderDelete: () => false,
|
||||
}
|
||||
|
||||
export default systemManage
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import { ComplexPermission } from '@/utils/permission/type'
|
|||
import { EditionConst, PermissionConst, RoleConst } from '@/utils/permission/data'
|
||||
const share = {
|
||||
is_share: () => false,
|
||||
addModel: () =>
|
||||
create: () =>
|
||||
hasPermission(
|
||||
[
|
||||
RoleConst.ADMIN,
|
||||
|
|
@ -35,5 +35,8 @@ const share = {
|
|||
],
|
||||
'OR',
|
||||
),
|
||||
folderCreate: () => false,
|
||||
folderEdit: () => false,
|
||||
folderDelete: () => false,
|
||||
}
|
||||
export default share
|
||||
|
|
|
|||
|
|
@ -10,7 +10,17 @@ const workspace = {
|
|||
[EditionConst.IS_EE],'OR'),
|
||||
'OR',
|
||||
),
|
||||
addModel: () =>
|
||||
create: () =>
|
||||
hasPermission(
|
||||
[
|
||||
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
|
||||
RoleConst.USER.getWorkspaceRole,
|
||||
PermissionConst.MODEL_CREATE.getWorkspacePermission,
|
||||
PermissionConst.MODEL_CREATE.getWorkspacePermissionWorkspaceManageRole
|
||||
],
|
||||
'OR'
|
||||
),
|
||||
folderCreate: () =>
|
||||
hasPermission(
|
||||
[
|
||||
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
|
||||
|
|
@ -30,6 +40,16 @@ const workspace = {
|
|||
],
|
||||
'OR'
|
||||
),
|
||||
folderEdit: () =>
|
||||
hasPermission(
|
||||
[
|
||||
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
|
||||
RoleConst.USER.getWorkspaceRole,
|
||||
PermissionConst.MODEL_EDIT.getWorkspacePermission,
|
||||
PermissionConst.MODEL_EDIT.getWorkspacePermissionWorkspaceManageRole
|
||||
],
|
||||
'OR'
|
||||
),
|
||||
paramSetting: (source_id:string) =>
|
||||
hasPermission(
|
||||
[
|
||||
|
|
@ -50,6 +70,16 @@ const workspace = {
|
|||
],
|
||||
'OR'
|
||||
),
|
||||
folderDelete: () =>
|
||||
hasPermission(
|
||||
[
|
||||
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
|
||||
RoleConst.USER.getWorkspaceRole,
|
||||
PermissionConst.MODEL_DELETE.getWorkspacePermission,
|
||||
PermissionConst.MODEL_DELETE.getWorkspacePermissionWorkspaceManageRole
|
||||
],
|
||||
'OR'
|
||||
),
|
||||
}
|
||||
|
||||
export default workspace
|
||||
|
|
|
|||
|
|
@ -20,6 +20,10 @@ const systemManage = {
|
|||
export: () => false,
|
||||
debug: () => false,
|
||||
|
||||
folderCreate: () => false,
|
||||
folderEdit: () => false,
|
||||
folderDelete: () => false,
|
||||
|
||||
}
|
||||
|
||||
export default systemManage
|
||||
|
|
|
|||
|
|
@ -59,5 +59,9 @@ const share = {
|
|||
],
|
||||
'OR',
|
||||
),
|
||||
|
||||
folderCreate: () => false,
|
||||
folderEdit: () => false,
|
||||
folderDelete: () => false,
|
||||
}
|
||||
export default share
|
||||
|
|
|
|||
|
|
@ -10,7 +10,6 @@ const workspace = {
|
|||
[EditionConst.IS_EE],'OR'),
|
||||
'OR',
|
||||
),
|
||||
|
||||
create: () =>
|
||||
hasPermission(
|
||||
[
|
||||
|
|
@ -21,6 +20,16 @@ const workspace = {
|
|||
],
|
||||
'OR'
|
||||
),
|
||||
folderCreate: () =>
|
||||
hasPermission(
|
||||
[
|
||||
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
|
||||
RoleConst.USER.getWorkspaceRole,
|
||||
PermissionConst.TOOL_CREATE.getWorkspacePermission,
|
||||
PermissionConst.TOOL_CREATE.getWorkspacePermissionWorkspaceManageRole
|
||||
],
|
||||
'OR'
|
||||
),
|
||||
delete: (source_id:string) =>
|
||||
hasPermission(
|
||||
[
|
||||
|
|
@ -31,6 +40,16 @@ const workspace = {
|
|||
],
|
||||
'OR',
|
||||
),
|
||||
folderDelete: () =>
|
||||
hasPermission(
|
||||
[
|
||||
RoleConst.USER.getWorkspaceRole,
|
||||
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
|
||||
PermissionConst.TOOL_DELETE.getWorkspacePermission,
|
||||
PermissionConst.TOOL_DELETE.getWorkspacePermissionWorkspaceManageRole
|
||||
],
|
||||
'OR',
|
||||
),
|
||||
switch: (source_id:string) =>
|
||||
hasPermission(
|
||||
[
|
||||
|
|
@ -51,6 +70,16 @@ const workspace = {
|
|||
],
|
||||
'OR'
|
||||
),
|
||||
folderEdit: () =>
|
||||
hasPermission(
|
||||
[
|
||||
RoleConst.USER.getWorkspaceRole,
|
||||
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
|
||||
PermissionConst.TOOL_EDIT.getWorkspacePermission,
|
||||
PermissionConst.TOOL_EDIT.getWorkspacePermissionWorkspaceManageRole
|
||||
],
|
||||
'OR',
|
||||
),
|
||||
copy: (source_id:string) =>
|
||||
hasPermission(
|
||||
[
|
||||
|
|
|
|||
|
|
@ -255,7 +255,7 @@
|
|||
|
||||
<el-dropdown-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>
|
||||
{{ $t('common.moveTo') }}
|
||||
|
|
@ -268,7 +268,7 @@
|
|||
path: `/knowledge/${item.id}/${folder.currentFolder.id || 'shared'}/setting`,
|
||||
})
|
||||
"
|
||||
v-if="permissionPrecise.setting(item.id)"
|
||||
v-if="permissionPrecise.edit(item.id)"
|
||||
>
|
||||
{{ $t('common.setting') }}
|
||||
</el-dropdown-item>
|
||||
|
|
|
|||
|
|
@ -59,7 +59,7 @@
|
|||
</el-select>
|
||||
</div>
|
||||
<el-button
|
||||
v-if="!isShared && permissionPrecise.addModel()"
|
||||
v-if="!isShared && permissionPrecise.create()"
|
||||
class="ml-16"
|
||||
type="primary"
|
||||
@click="openCreateModel(active_provider)"
|
||||
|
|
|
|||
Loading…
Reference in New Issue