From 7ce1d897b308add111f8030a037955f07424f664 Mon Sep 17 00:00:00 2001 From: zhangzhanwei Date: Tue, 2 Dec 2025 14:54:51 +0800 Subject: [PATCH] feat: Knowledge workflow back route permission --- apps/common/constants/permission_constants.py | 2 +- ui/src/views/knowledge-workflow/index.vue | 70 ++++++++++++++++--- 2 files changed, 63 insertions(+), 9 deletions(-) diff --git a/apps/common/constants/permission_constants.py b/apps/common/constants/permission_constants.py index 58448a6a5..51da57260 100644 --- a/apps/common/constants/permission_constants.py +++ b/apps/common/constants/permission_constants.py @@ -1466,7 +1466,7 @@ class PermissionConstants(Enum): parent_group=[SystemGroup.RESOURCE_KNOWLEDGE], is_ee=settings.edition == "EE" ) RESOURCE_KNOWLEDGE_WORKFLOW_EDIT = Permission( - group=Group.SYSTEM_RES_KNOWLEDGE_WORKFLOW, operate=Operate.READ, role_list=[RoleConstants.ADMIN], + group=Group.SYSTEM_RES_KNOWLEDGE_WORKFLOW, operate=Operate.EDIT, role_list=[RoleConstants.ADMIN], parent_group=[SystemGroup.RESOURCE_KNOWLEDGE], is_ee=settings.edition == "EE" ) RESOURCE_KNOWLEDGE_DOCUMENT_READ = Permission( diff --git a/ui/src/views/knowledge-workflow/index.vue b/ui/src/views/knowledge-workflow/index.vue index ed7675736..e8848c0a2 100644 --- a/ui/src/views/knowledge-workflow/index.vue +++ b/ui/src/views/knowledge-workflow/index.vue @@ -153,7 +153,7 @@ import { KnowledgeWorkFlowInstance } from '@/workflow/common/validate' import { hasPermission } from '@/utils/permission' import DebugVue from './component/DebugDrawer.vue' import { t } from '@/locales' -import { ComplexPermission } from '@/utils/permission/type' +import { ComplexPermission, Permission } from '@/utils/permission/type' import { EditionConst, PermissionConst, RoleConst } from '@/utils/permission/data' import permissionMap from '@/permission' import { WorkflowMode } from '@/enums/application' @@ -464,21 +464,75 @@ function saveknowledge(bool?: boolean, back?: boolean) { }) } const go = () => { - if (route.path.includes('workspace')) { - return router.push({ path: get_route() }) - } else { + if (route.path.includes('resource-management')) { return router.push({ path: get_resource_management_route() }) + } else if (route.path.includes('shared')) { + return router.push({ path: get_shared_route() }) + } else { + return router.push({ path: get_route() }) + } +} + +const get_shared_route = () => { + if (hasPermission([RoleConst.ADMIN, PermissionConst.SHARED_KNOWLEDGE_DOCUMENT_READ], 'OR')) { + return `knowledge/${id}/shared/4/document` + } else if (hasPermission([RoleConst.ADMIN, PermissionConst.SHARED_KNOWLEDGE_PROBLEM_READ], 'OR')) { + return `/knowledge/${id}/shared/4/problem` + } else if (hasPermission([RoleConst.ADMIN, PermissionConst.SHARED_KNOWLEDGE_HIT_TEST_READ], 'OR')) { + return `/knowledge/${id}/shared/4/hit-test` + } else if (hasPermission([RoleConst.ADMIN, PermissionConst.SHARED_KNOWLEDGE_CHAT_USER_READ], 'OR')) { + return `/knowledge/${id}/shared/4/chat-user` + } else if (hasPermission([RoleConst.ADMIN, PermissionConst.SHARED_KNOWLEDGE_EDIT], 'OR')) { + return `/knowledge/${id}/shared/4/setting` + } else { + return `/system/shared/knowledge` } } const get_resource_management_route = () => { - return `/knowledge/${id}/${folderId}/4/document` - - // return `/system/resource-management/knowledge` 没有权限的时候返回resource-management的列表 + if (hasPermission([RoleConst.ADMIN, PermissionConst.RESOURCE_KNOWLEDGE_DOCUMENT_READ],'OR')) { + return `/knowledge/${id}/resource-management/4/document` + } else if (hasPermission([RoleConst.ADMIN, PermissionConst.RESOURCE_KNOWLEDGE_PROBLEM_READ], 'OR')) { + return `/knowledge/${id}/resource-management/4/problem` + } else if (hasPermission([RoleConst.ADMIN, PermissionConst.RESOURCE_KNOWLEDGE_HIT_TEST], 'OR')) { + return `/knowledge/${id}/resource-management/4/hit-test` + } else if (hasPermission([RoleConst.ADMIN, PermissionConst.RESOURCE_KNOWLEDGE_CHAT_USER_READ], 'OR')) { + return `/knowledge/${id}/resource-management/4/chat-user` + } else if (hasPermission([RoleConst.ADMIN, PermissionConst.RESOURCE_KNOWLEDGE_EDIT], 'OR')) { + return `/knowledge/${id}/resource-management/4/setting` + } else { + return `/system/resource-management/knowledge` + } } const get_route = () => { - return `/knowledge/${id}/${folderId}/4/document` + const checkPermission = (permissionConst: Permission) => { + return hasPermission([ + new ComplexPermission( + [RoleConst.USER], + [PermissionConst.KNOWLEDGE.getKnowledgeWorkspaceResourcePermission(id)], + [], + 'AND' + ), + RoleConst.WORKSPACE_MANAGE.getWorkspaceRole, + permissionConst.getWorkspacePermissionWorkspaceManageRole, + permissionConst.getKnowledgeWorkspaceResourcePermission(id), + ],'OR' + ) + } + if (checkPermission(PermissionConst.KNOWLEDGE_DOCUMENT_READ)) { + return `/knowledge/${id}/${folderId}/4/document` + } else if (checkPermission(PermissionConst.KNOWLEDGE_PROBLEM_READ)) { + return `/knowledge/${id}/${folderId}/4/problem` + } else if (checkPermission(PermissionConst.KNOWLEDGE_HIT_TEST_READ)) { + return `/knowledge/${id}/${folderId}/4/hit-test` + } else if (checkPermission(PermissionConst.KNOWLEDGE_CHAT_USER_READ)) { + return `/knowledge/${id}/${folderId}/4/chat-user` + } else if (checkPermission(PermissionConst.KNOWLEDGE_EDIT)) { + return `/knowledge/${id}/${folderId}/4/setting` + } else { + return `/knowledge` + } } /**