From 6d542c55d461ad58a2f06026738fbb39a2340e47 Mon Sep 17 00:00:00 2001 From: panxinying Date: Tue, 10 Nov 2026 09:55:50 +0800 Subject: [PATCH] feat: workspace tool edit permission --- ui/src/views/tool/index.vue | 4 ++-- ui/src/views/tool/tool-form/EditToolForm.vue | 12 ++++++++++++ .../tool/tool-form/tool-custom/ToolFormDrawer.vue | 9 ++++++--- 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/ui/src/views/tool/index.vue b/ui/src/views/tool/index.vue index 9df16485dbd..f0fc647e726 100644 --- a/ui/src/views/tool/index.vue +++ b/ui/src/views/tool/index.vue @@ -107,8 +107,8 @@ const router = useRouter() const editToolFormRef = useTemplateRef>('editToolFormRef') function handleOpenEditTool(tool: ToolItem) { - if (!perm.tool.workspace.edit(tool.id)) return - return editToolFormRef.value?.open(tool) + if (!perm.tool.workspace.read()) return +return editToolFormRef.value?.open(tool) } function handleOpenTool(tool: ToolItem, event: MouseEvent) { diff --git a/ui/src/views/tool/tool-form/EditToolForm.vue b/ui/src/views/tool/tool-form/EditToolForm.vue index 9669f8e139d..2497a4e35cb 100644 --- a/ui/src/views/tool/tool-form/EditToolForm.vue +++ b/ui/src/views/tool/tool-form/EditToolForm.vue @@ -10,6 +10,17 @@ import DataSourceFormDrawer from '@/views/tool/tool-form/DataSourceFormDrawer.vu import McpFormDrawer from '@/views/tool/tool-form/McpFormDrawer.vue' import SkillToolFormDrawer from '@/views/tool/tool-form/SkillToolFormDrawer.vue' import WorkflowFormDialog from '@/views/tool/tool-form/WorkflowFormDialog.vue' +import { computed } from 'vue' +import perm from '@/permission/index.ts' +import { isSystemResource, isSystemSharedResource } from '@/utils/resource-context' + +const canEdit = computed(() => { + const id = tool.value?.id + if (!id) return false + if (isSystemResource()) return perm.tool.system.edit() + if (isSystemSharedResource()) return perm.tool.share.edit() + return perm.tool.workspace.edit(id) +}) defineOptions({ name: 'EditToolForm' }) @@ -95,6 +106,7 @@ defineExpose({ open }) :folder-id="tool.folder_id ?? ''" @closed="handleFormClosed" @update="emit('update', $event)" + :can-edit="canEdit" /> diff --git a/ui/src/views/tool/tool-form/tool-custom/ToolFormDrawer.vue b/ui/src/views/tool/tool-form/tool-custom/ToolFormDrawer.vue index 7b3faf71017..c8816c1ab44 100644 --- a/ui/src/views/tool/tool-form/tool-custom/ToolFormDrawer.vue +++ b/ui/src/views/tool/tool-form/tool-custom/ToolFormDrawer.vue @@ -20,7 +20,10 @@ defineOptions({ name: 'ToolFormDrawer' }) const { auth } = useStore() -const props = defineProps<{ api: typeof ToolApi | typeof SystemSharedToolApi | typeof SystemResourceToolApi; title: string; folderId: string }>() +const props = withDefaults( + defineProps<{ api: typeof ToolApi | typeof SystemSharedToolApi | typeof SystemResourceToolApi; title: string; folderId: string; canEdit?: boolean }>(), + { canEdit: true }, +) const emit = defineEmits<{ closed: []; refresh: []; update: [tool: ToolItem] }>() @@ -228,8 +231,8 @@ defineExpose({ open })