From b011cd7d26232b74012f3761636ea743eb171f2a Mon Sep 17 00:00:00 2001 From: CaptainB Date: Wed, 2 Jul 2025 18:15:25 +0800 Subject: [PATCH] feat: add tool creation with automatic permissions and cache refresh MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --bug=1057901 --user=刘瑞斌 【资源授权】社区版从工具商店添加工具失败 https://www.tapd.cn/62980211/s/1722159 --- apps/tools/serializers/tool.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/apps/tools/serializers/tool.py b/apps/tools/serializers/tool.py index 492d48284..e9b3f3155 100644 --- a/apps/tools/serializers/tool.py +++ b/apps/tools/serializers/tool.py @@ -498,8 +498,9 @@ class ToolSerializer(serializers.Serializer): if internal_tool is None: raise AppApiException(500, _('Tool does not exist')) + tool_id = uuid.uuid7() tool = Tool( - id=uuid.uuid7(), + id=tool_id, name=instance.get('name', internal_tool.name), desc=internal_tool.desc, code=internal_tool.code, @@ -516,6 +517,21 @@ class ToolSerializer(serializers.Serializer): ) tool.save() + # 自动授权给创建者 + WorkspaceUserResourcePermission( + target=tool_id, + auth_target_type=AuthTargetType.TOOL, + permission_list=[ResourcePermission.VIEW, ResourcePermission.MANAGE], + workspace_id=self.data.get('workspace_id'), + user_id=self.data.get('user_id'), + auth_type=ResourceAuthType.RESOURCE_PERMISSION_GROUP + ).save() + + # 刷新缓存 + version = Cache_Version.PERMISSION_LIST.get_version() + key = Cache_Version.PERMISSION_LIST.get_key(user_id=self.data.get('user_id')) + cache.delete(key, version=version) + return ToolModelSerializer(tool).data