From 0db26226639b4488529fb36d722d7bdb4cb7fe12 Mon Sep 17 00:00:00 2001 From: zhangzhanwei Date: Thu, 4 Dec 2025 13:45:32 +0800 Subject: [PATCH] fix: Knowledge workflow permission --- .../impl/base_data_source_web_node.py | 2 +- .../impl/base_knowledge_write_node.py | 2 +- apps/knowledge/views/knowledge_workflow.py | 42 ++++++++++++++----- .../views/knowledge_workflow_version.py | 16 +++---- .../component/PublishHistory.vue | 13 +++++- 5 files changed, 53 insertions(+), 22 deletions(-) diff --git a/apps/application/flow/step_node/data_source_web_node/impl/base_data_source_web_node.py b/apps/application/flow/step_node/data_source_web_node/impl/base_data_source_web_node.py index e51ac4d56..9561955aa 100644 --- a/apps/application/flow/step_node/data_source_web_node/impl/base_data_source_web_node.py +++ b/apps/application/flow/step_node/data_source_web_node/impl/base_data_source_web_node.py @@ -65,7 +65,7 @@ class BaseDataSourceWebNode(IDataSourceWebNode): try: ForkManage(source_url, selector.split(" ") if selector is not None else []).fork(3, set(), collect_handler) - return NodeResult({'document_list': document_list}, + return NodeResult({'document_list': document_list,'source_url': source_url, 'selector': selector}, self.workflow_manage.params.get('knowledge_base') or {}) except Exception as e: diff --git a/apps/application/flow/step_node/knowledge_write_node/impl/base_knowledge_write_node.py b/apps/application/flow/step_node/knowledge_write_node/impl/base_knowledge_write_node.py index db2080374..abcec8078 100644 --- a/apps/application/flow/step_node/knowledge_write_node/impl/base_knowledge_write_node.py +++ b/apps/application/flow/step_node/knowledge_write_node/impl/base_knowledge_write_node.py @@ -208,7 +208,7 @@ class BaseKnowledgeWriteNode(IKnowledgeWriteNode): "paragraphs": [{ "title": p.get("title"), "content": p.get("content"), - } for p in document.get("paragraphs")[0:4]] + } for p in document.get("paragraphs")[0:5]] } for document in documents] return NodeResult({'write_content': write_content_list}, {}) diff --git a/apps/knowledge/views/knowledge_workflow.py b/apps/knowledge/views/knowledge_workflow.py index b7cb7ac5b..1bc7ae439 100644 --- a/apps/knowledge/views/knowledge_workflow.py +++ b/apps/knowledge/views/knowledge_workflow.py @@ -20,12 +20,34 @@ from knowledge.serializers.knowledge_workflow import KnowledgeWorkflowSerializer class KnowledgeDatasourceFormListView(APIView): authentication_classes = [TokenAuth] + @has_permissions( + PermissionConstants.KNOWLEDGE_WORKFLOW_READ.get_workspace_knowledge_permission(), + PermissionConstants.KNOWLEDGE_WORKFLOW_READ.get_workspace_permission_workspace_manage_role(), + RoleConstants.WORKSPACE_MANAGE.get_workspace_role(), + ViewPermission( + [RoleConstants.USER.get_workspace_role()], + [PermissionConstants.KNOWLEDGE.get_workspace_knowledge_permission()], + CompareConstants.AND + ), + ) def post(self, request: Request, workspace_id: str, knowledge_id: str, type: str, id: str): return result.success(KnowledgeWorkflowSerializer.Datasource( data={'type': type, 'id': id, 'params': request.data, 'function_name': 'get_form_list'}).action()) class KnowledgeDatasourceView(APIView): + authentication_classes = [TokenAuth] + + @has_permissions( + PermissionConstants.KNOWLEDGE_WORKFLOW_READ.get_workspace_knowledge_permission(), + PermissionConstants.KNOWLEDGE_WORKFLOW_READ.get_workspace_permission_workspace_manage_role(), + RoleConstants.WORKSPACE_MANAGE.get_workspace_role(), + ViewPermission( + [RoleConstants.USER.get_workspace_role()], + [PermissionConstants.KNOWLEDGE.get_workspace_knowledge_permission()], + CompareConstants.AND + ), + ) def post(self, request: Request, workspace_id: str, knowledge_id: str, type: str, id: str, function_name: str): return result.success(KnowledgeWorkflowSerializer.Datasource( data={'type': type, 'id': id, 'params': request.data, 'function_name': function_name}).action()) @@ -45,8 +67,8 @@ class KnowledgeWorkflowUploadDocumentView(APIView): tags=[_('Knowledge Base')] # type: ignore ) @has_permissions( - PermissionConstants.KNOWLEDGE_READ.get_workspace_knowledge_permission(), - PermissionConstants.KNOWLEDGE_READ.get_workspace_permission_workspace_manage_role(), + PermissionConstants.KNOWLEDGE_WORKFLOW_READ.get_workspace_knowledge_permission(), + PermissionConstants.KNOWLEDGE_WORKFLOW_READ.get_workspace_permission_workspace_manage_role(), RoleConstants.WORKSPACE_MANAGE.get_workspace_role(), ViewPermission( [RoleConstants.USER.get_workspace_role()], @@ -99,8 +121,8 @@ class KnowledgeWorkflowActionView(APIView): tags=[_('Knowledge Base')] # type: ignore ) @has_permissions( - PermissionConstants.KNOWLEDGE_READ.get_workspace_knowledge_permission(), - PermissionConstants.KNOWLEDGE_READ.get_workspace_permission_workspace_manage_role(), + PermissionConstants.KNOWLEDGE_WORKFLOW_READ.get_workspace_knowledge_permission(), + PermissionConstants.KNOWLEDGE_WORKFLOW_READ.get_workspace_permission_workspace_manage_role(), RoleConstants.WORKSPACE_MANAGE.get_workspace_role(), ViewPermission( [RoleConstants.USER.get_workspace_role()], @@ -204,8 +226,8 @@ class KnowledgeWorkflowView(APIView): tags=[_('Knowledge Base')] # type: ignore ) @has_permissions( - PermissionConstants.KNOWLEDGE_READ.get_workspace_knowledge_permission(), - PermissionConstants.KNOWLEDGE_READ.get_workspace_permission_workspace_manage_role(), + PermissionConstants.KNOWLEDGE_WORKFLOW_READ.get_workspace_knowledge_permission(), + PermissionConstants.KNOWLEDGE_WORKFLOW_READ.get_workspace_permission_workspace_manage_role(), RoleConstants.WORKSPACE_MANAGE.get_workspace_role(), ViewPermission( [RoleConstants.USER.get_workspace_role()], @@ -232,8 +254,8 @@ class KnowledgeWorkflowVersionView(APIView): tags=[_('Knowledge Base')] # type: ignore ) @has_permissions( - PermissionConstants.KNOWLEDGE_READ.get_workspace_knowledge_permission(), - PermissionConstants.KNOWLEDGE_READ.get_workspace_permission_workspace_manage_role(), + PermissionConstants.KNOWLEDGE_WORKFLOW_READ.get_workspace_knowledge_permission(), + PermissionConstants.KNOWLEDGE_WORKFLOW_READ.get_workspace_permission_workspace_manage_role(), RoleConstants.WORKSPACE_MANAGE.get_workspace_role(), ViewPermission( [RoleConstants.USER.get_workspace_role()], @@ -260,8 +282,8 @@ class McpServers(APIView): responses=SpeechToTextAPI.get_response(), tags=[_('Knowledge Base')] # type: ignore ) - @has_permissions(PermissionConstants.KNOWLEDGE_READ.get_workspace_application_permission(), - PermissionConstants.KNOWLEDGE_READ.get_workspace_permission_workspace_manage_role(), + @has_permissions(PermissionConstants.KNOWLEDGE_WORKFLOW_READ.get_workspace_application_permission(), + PermissionConstants.KNOWLEDGE_WORKFLOW_READ.get_workspace_permission_workspace_manage_role(), ViewPermission([RoleConstants.USER.get_workspace_role()], [PermissionConstants.KNOWLEDGE.get_workspace_application_permission()], CompareConstants.AND), diff --git a/apps/knowledge/views/knowledge_workflow_version.py b/apps/knowledge/views/knowledge_workflow_version.py index 6d20f0de6..6202b7b83 100644 --- a/apps/knowledge/views/knowledge_workflow_version.py +++ b/apps/knowledge/views/knowledge_workflow_version.py @@ -44,8 +44,8 @@ class KnowledgeWorkflowVersionView(APIView): responses=KnowledgeVersionListAPI.get_response(), tags=[_('Knowledge/Version')] # type: ignore ) - @has_permissions(PermissionConstants.KNOWLEDGE_READ.get_workspace_knowledge_permission(), - PermissionConstants.KNOWLEDGE_READ.get_workspace_permission_workspace_manage_role(), + @has_permissions(PermissionConstants.KNOWLEDGE_WORKFLOW_READ.get_workspace_knowledge_permission(), + PermissionConstants.KNOWLEDGE_WORKFLOW_READ.get_workspace_permission_workspace_manage_role(), ViewPermission([RoleConstants.USER.get_workspace_role()], [PermissionConstants.KNOWLEDGE.get_workspace_knowledge_permission()], CompareConstants.AND), @@ -68,8 +68,8 @@ class KnowledgeWorkflowVersionView(APIView): responses=KnowledgeVersionPageAPI.get_response(), tags=[_('Knowledge/Version')] # type: ignore ) - @has_permissions(PermissionConstants.KNOWLEDGE_READ.get_workspace_knowledge_permission(), - PermissionConstants.KNOWLEDGE_READ.get_workspace_permission_workspace_manage_role(), + @has_permissions(PermissionConstants.KNOWLEDGE_WORKFLOW_READ.get_workspace_knowledge_permission(), + PermissionConstants.KNOWLEDGE_WORKFLOW_READ.get_workspace_permission_workspace_manage_role(), ViewPermission([RoleConstants.USER.get_workspace_role()], [PermissionConstants.KNOWLEDGE.get_workspace_knowledge_permission()], CompareConstants.AND), @@ -93,8 +93,8 @@ class KnowledgeWorkflowVersionView(APIView): responses=KnowledgeVersionOperateAPI.get_response(), tags=[_('Knowledge/Version')] # type: ignore ) - @has_permissions(PermissionConstants.KNOWLEDGE_EDIT.get_workspace_knowledge_permission(), - PermissionConstants.KNOWLEDGE_EDIT.get_workspace_permission_workspace_manage_role(), + @has_permissions(PermissionConstants.KNOWLEDGE_WORKFLOW_READ.get_workspace_knowledge_permission(), + PermissionConstants.KNOWLEDGE_WORKFLOW_READ.get_workspace_permission_workspace_manage_role(), ViewPermission([RoleConstants.USER.get_workspace_role()], [PermissionConstants.KNOWLEDGE.get_workspace_knowledge_permission()], CompareConstants.AND), @@ -115,8 +115,8 @@ class KnowledgeWorkflowVersionView(APIView): responses=KnowledgeVersionOperateAPI.get_response(), tags=[_('Knowledge/Version')] # type: ignore ) - @has_permissions(PermissionConstants.KNOWLEDGE_EDIT.get_workspace_knowledge_permission(), - PermissionConstants.KNOWLEDGE_EDIT.get_workspace_permission_workspace_manage_role(), + @has_permissions(PermissionConstants.KNOWLEDGE_WORKFLOW_EDIT.get_workspace_knowledge_permission(), + PermissionConstants.KNOWLEDGE_WORKFLOW_EDIT.get_workspace_permission_workspace_manage_role(), ViewPermission([RoleConstants.USER.get_workspace_role()], [PermissionConstants.KNOWLEDGE.get_workspace_knowledge_permission()], CompareConstants.AND), diff --git a/ui/src/views/knowledge-workflow/component/PublishHistory.vue b/ui/src/views/knowledge-workflow/component/PublishHistory.vue index a378bfcdb..b3a41a1e5 100644 --- a/ui/src/views/knowledge-workflow/component/PublishHistory.vue +++ b/ui/src/views/knowledge-workflow/component/PublishHistory.vue @@ -42,7 +42,10 @@