From 0f8fe31e5258d246244e2c0c3838820198261129 Mon Sep 17 00:00:00 2001 From: zhangzhanwei Date: Mon, 23 Jun 2025 17:44:46 +0800 Subject: [PATCH] feat: Tool permission --- ui/src/permission/tool/workspace.ts | 62 +++++++++++++++++++++ ui/src/router/modules/document.ts | 27 ++++++++- ui/src/views/application/index.vue | 3 +- ui/src/views/document/index.vue | 45 ++++++++++----- ui/src/views/knowledge/KnowledgeSetting.vue | 9 ++- ui/src/views/knowledge/index.vue | 24 +++++--- ui/src/views/problem/index.vue | 25 +++++---- ui/src/views/tool/ToolFormDrawer.vue | 41 ++++++++------ ui/src/views/tool/index.vue | 41 ++------------ 9 files changed, 188 insertions(+), 89 deletions(-) diff --git a/ui/src/permission/tool/workspace.ts b/ui/src/permission/tool/workspace.ts index adf904aa..1dbf2a09 100644 --- a/ui/src/permission/tool/workspace.ts +++ b/ui/src/permission/tool/workspace.ts @@ -18,9 +18,71 @@ const workspace = { RoleConst.WORKSPACE_MANAGE.getWorkspaceRole, RoleConst.USER.getWorkspaceRole, PermissionConst.TOOL_DELETE.getWorkspacePermission, + PermissionConst.TOOL_DELETE.getWorkspacePermissionWorkspaceManageRole ], 'OR', ), + create: () => + hasPermission( + [ + RoleConst.WORKSPACE_MANAGE.getWorkspaceRole, + RoleConst.USER.getWorkspaceRole, + PermissionConst.TOOL_CREATE.getWorkspacePermission, + PermissionConst.TOOL_CREATE.getWorkspacePermissionWorkspaceManageRole + ], + 'OR' + ), + switch: () => + hasPermission( + [ + RoleConst.WORKSPACE_MANAGE.getWorkspaceRole, + RoleConst.USER.getWorkspaceRole, + PermissionConst.TOOL_EDIT.getWorkspacePermission, + PermissionConst.TOOL_EDIT.getWorkspacePermissionWorkspaceManageRole + ], + 'OR' + ), + edit: () => + hasPermission( + [ + RoleConst.WORKSPACE_MANAGE.getWorkspaceRole, + RoleConst.USER.getWorkspaceRole, + PermissionConst.TOOL_EDIT.getWorkspacePermission, + PermissionConst.TOOL_EDIT.getWorkspacePermissionWorkspaceManageRole + ], + 'OR' + ), + copy: () => + hasPermission( + [ + RoleConst.WORKSPACE_MANAGE.getWorkspaceRole, + RoleConst.USER.getWorkspaceRole, + PermissionConst.TOOL_EXPORT.getWorkspacePermission, + PermissionConst.TOOL_EXPORT.getWorkspacePermissionWorkspaceManageRole + ], + 'OR' + ), + export: () => + hasPermission( + [ + RoleConst.WORKSPACE_MANAGE.getWorkspaceRole, + RoleConst.USER.getWorkspaceRole, + PermissionConst.TOOL_EXPORT.getWorkspacePermission, + PermissionConst.TOOL_EXPORT.getWorkspacePermissionWorkspaceManageRole + ], + 'OR' + ), + debug: () => + hasPermission( + [ + RoleConst.WORKSPACE_MANAGE.getWorkspaceRole, + RoleConst.USER.getWorkspaceRole, + PermissionConst.TOOL_DEBUG.getWorkspacePermission, + PermissionConst.TOOL_DEBUG.getWorkspacePermissionWorkspaceManageRole + ], + 'OR' + ), + } export default workspace diff --git a/ui/src/router/modules/document.ts b/ui/src/router/modules/document.ts index bdd4f7b7..6263a401 100644 --- a/ui/src/router/modules/document.ts +++ b/ui/src/router/modules/document.ts @@ -1,3 +1,4 @@ +import role from '@/api/system/role' import { ChatUserResourceEnum } from '@/enums/workspaceChatUser' import { PermissionConst, EditionConst, RoleConst } from '@/utils/permission/data' @@ -18,6 +19,12 @@ const DocumentRouter = { active: 'document', parentPath: '/knowledge/:id/:folderId', parentName: 'KnowledgeDetail', + permission: [ + RoleConst.ADMIN, + RoleConst.WORKSPACE_MANAGE.getWorkspaceRole, + PermissionConst.KNOWLEDGE_DOCUMENT_READ.getWorkspacePermission, + PermissionConst.KNOWLEDGE_DOCUMENT_READ.getWorkspacePermissionWorkspaceManageRole + ], }, component: () => import('@/views/document/index.vue'), }, @@ -31,6 +38,12 @@ const DocumentRouter = { active: 'problem', parentPath: '/knowledge/:id/:folderId', parentName: 'KnowledgeDetail', + permission: [ + RoleConst.ADMIN, + RoleConst.WORKSPACE_MANAGE.getWorkspaceRole, + PermissionConst.KNOWLEDGE_PROBLEM_READ.getWorkspacePermission, + PermissionConst.KNOWLEDGE_PROBLEM_READ.getWorkspacePermissionWorkspaceManageRole + ], }, component: () => import('@/views/problem/index.vue'), }, @@ -57,7 +70,12 @@ const DocumentRouter = { parentPath: '/knowledge/:id/:folderId', parentName: 'KnowledgeDetail', resourceType: ChatUserResourceEnum.KNOWLEDGE, - permission: [EditionConst.IS_PE, EditionConst.IS_EE], + permission: [ + RoleConst.ADMIN, + RoleConst.WORKSPACE_MANAGE.getWorkspaceRole, + PermissionConst.WORKSPACE_CHAT_USER_READ.getWorkspacePermission, + PermissionConst.WORKSPACE_CHAT_USER_READ.getWorkspacePermissionWorkspaceManageRole + ], }, component: () => import('@/views/chat-user/index.vue'), }, @@ -71,6 +89,13 @@ const DocumentRouter = { active: 'setting', parentPath: '/knowledge/:id/:folderId', parentName: 'KnowledgeDetail', + permission: [ + RoleConst.ADMIN, + RoleConst.WORKSPACE_MANAGE.getWorkspaceRole, + PermissionConst.KNOWLEDGE_EDIT.getWorkspacePermission, + PermissionConst.KNOWLEDGE_EDIT.getWorkspacePermissionWorkspaceManageRole + ] + }, component: () => import('@/views/knowledge/KnowledgeSetting.vue'), }, diff --git a/ui/src/views/application/index.vue b/ui/src/views/application/index.vue index 3e198fd9..9215c19b 100644 --- a/ui/src/views/application/index.vue +++ b/ui/src/views/application/index.vue @@ -48,8 +48,9 @@ type="primary" class="ml-8" v-hasPermission="[ + RoleConst.ADMIN, RoleConst.WORKSPACE_MANAGE.getWorkspaceRole, - RoleConst.USER.getWorkspaceRole, + PermissionConst.APPLICATION_EDIT.getWorkspacePermissionWorkspaceManageRole, PermissionConst.APPLICATION_EDIT.getWorkspacePermission, ]" > diff --git a/ui/src/views/document/index.vue b/ui/src/views/document/index.vue index 690ea271..da63d0df 100644 --- a/ui/src/views/document/index.vue +++ b/ui/src/views/document/index.vue @@ -14,7 +14,7 @@ " v-hasPermission="[ RoleConst.WORKSPACE_MANAGE.getWorkspaceRole, - RoleConst.USER.getWorkspaceRole, + RoleConst.ADMIN, PermissionConst.KNOWLEDGE_DOCUMENT_CREATE.getWorkspacePermissionWorkspaceManageRole, PermissionConst.KNOWLEDGE_DOCUMENT_CREATE.getKnowledgeWorkspaceResourcePermission(id), ]" @@ -25,7 +25,7 @@ type="primary" @click="importDoc" v-hasPermission="[ - RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,RoleConst.USER.getWorkspaceRole, + RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,RoleConst.ADMIN, PermissionConst.KNOWLEDGE_DOCUMENT_CREATE.getWorkspacePermissionWorkspaceManageRole, PermissionConst.KNOWLEDGE_DOCUMENT_CREATE.getKnowledgeWorkspaceResourcePermission(id), ]" @@ -38,17 +38,21 @@ router.push({ path: `/knowledge/import`, query: { id: id, folder_token: knowledgeDetail.meta.folder_token }, - }) - " + })" + v-hasPermission="[ + RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,RoleConst.ADMIN, + PermissionConst.KNOWLEDGE_DOCUMENT_CREATE.getWorkspacePermissionWorkspaceManageRole, + PermissionConst.KNOWLEDGE_DOCUMENT_CREATE.getKnowledgeWorkspaceResourcePermission(id), + ]" >{{ $t('views.document.importDocument') }} {{ $t('views.knowledge.setting.vectorization') }} @@ -56,9 +60,9 @@ @click="openGenerateDialog()" :disabled="multipleSelection.length === 0" v-hasPermission="[ - RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,RoleConst.USER.getWorkspaceRole, + RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,RoleConst.ADMIN, PermissionConst.KNOWLEDGE_DOCUMENT_GENERATE.getWorkspacePermissionWorkspaceManageRole, - PermissionConst.KNOWLEDGE_DOCUMENT_GENERATE.getWorkspacePermission, + PermissionConst.KNOWLEDGE_DOCUMENT_GENERATE.getKnowledgeWorkspaceResourcePermission(id), ]" >{{ $t('views.document.generateQuestion.title') }} @@ -66,9 +70,9 @@ @click="openknowledgeDialog()" :disabled="multipleSelection.length === 0" v-hasPermission="[ - RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,RoleConst.USER.getWorkspaceRole, + RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,RoleConst.ADMIN, PermissionConst.KNOWLEDGE_DOCUMENT_MIGRATE.getWorkspacePermissionWorkspaceManageRole, - PermissionConst.KNOWLEDGE_DOCUMENT_MIGRATE.getWorkspacePermission, + PermissionConst.KNOWLEDGE_DOCUMENT_MIGRATE.getKnowledgeWorkspaceResourcePermission(id), ]" >{{ $t('views.document.setting.migration') }} @@ -84,9 +88,9 @@ @click="openBatchEditDocument" :disabled="multipleSelection.length === 0" v-if="hasPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole, - RoleConst.USER.getWorkspaceRole, + RoleConst.ADMIN, PermissionConst.KNOWLEDGE_DOCUMENT_EDIT.getWorkspacePermissionWorkspaceManageRole, - PermissionConst.KNOWLEDGE_DOCUMENT_EDIT.getWorkspacePermission],'OR')" + PermissionConst.KNOWLEDGE_DOCUMENT_EDIT.getKnowledgeWorkspaceResourcePermission(id)],'OR')" > {{ $t('common.setting') }} @@ -96,15 +100,20 @@ :disabled="multipleSelection.length === 0" v-if="knowledgeDetail.type === 1 && hasPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole, - RoleConst.USER.getWorkspaceRole, - PermissionConst.KNOWLEDGE_DOCUMENT_SYNC.getWorkspacePermission],'OR')" + RoleConst.ADMIN, + PermissionConst.KNOWLEDGE_DOCUMENT_SYNC.getWorkspacePermission, + PermissionConst.KNOWLEDGE_DOCUMENT_SYNC.getKnowledgeWorkspaceResourcePermission(id)],'OR')" >{{ $t('views.document.syncDocument') }} {{ $t('views.document.syncDocument') }} @@ -112,6 +121,12 @@ divided @click="deleteMulDocument" :disabled="multipleSelection.length === 0" + v-if=" + hasPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole, + RoleConst.ADMIN, + PermissionConst.KNOWLEDGE_DOCUMENT_DELETE.getWorkspacePermission, + PermissionConst.KNOWLEDGE_DOCUMENT_DELETE.getKnowledgeWorkspaceResourcePermission(id)],'OR') + " >{{ $t('common.delete') }} diff --git a/ui/src/views/knowledge/KnowledgeSetting.vue b/ui/src/views/knowledge/KnowledgeSetting.vue index 14ffe3dd..b40b5b32 100644 --- a/ui/src/views/knowledge/KnowledgeSetting.vue +++ b/ui/src/views/knowledge/KnowledgeSetting.vue @@ -140,7 +140,12 @@
- {{ $t('common.save') }} + {{ $t('common.save') }}
@@ -158,6 +163,8 @@ import { MsgSuccess, MsgConfirm } from '@/utils/message' import { isAppIcon } from '@/utils/common' import useStore from '@/stores' import { t } from '@/locales' +import { PermissionConst, RoleConst } from '@/utils/permission/data' +import { hasPermission } from '@/utils/permission/index' const route = useRoute() const { diff --git a/ui/src/views/knowledge/index.vue b/ui/src/views/knowledge/index.vue index d62093ad..3419688c 100644 --- a/ui/src/views/knowledge/index.vue +++ b/ui/src/views/knowledge/index.vue @@ -50,6 +50,8 @@ class="ml-8" v-hasPermission="[ RoleConst.ADMIN, + RoleConst.USER.getWorkspaceRole, + RoleConst.WORKSPACE_MANAGE.getWorkspaceRole, PermissionConst.KNOWLEDGE_CREATE.getWorkspacePermissionWorkspaceManageRole, PermissionConst.KNOWLEDGE_CREATE.getWorkspacePermission, ]" @@ -196,6 +198,11 @@ @click=" router.push({ path: `/knowledge/${item.id}/${currentFolder.id}/document` }) " + v-hasPermission="[ + RoleConst.ADMIN, + RoleConst.WORKSPACE_MANAGE.getWorkspaceRole, + PermissionConst.KNOWLEDGE_DOCUMENT_READ.getWorkspacePermissionWorkspaceManageRole, + PermissionConst.KNOWLEDGE_DOCUMENT_READ.getKnowledgeWorkspaceResourcePermission(item.id),]" >