From 95ae0c83d2aa58d86b4039e3f7f16ee93afb8f00 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期五, 23 十月 2026 17:01:00 +0800
Subject: [PATCH] feat(ai): 完善模型管理和智能体导入功能
---
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/framework/agent/SystemAgentBridgeGuard.java | 47 ++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 44 insertions(+), 3 deletions(-)
diff --git a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/framework/agent/SystemAgentBridgeGuard.java b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/framework/agent/SystemAgentBridgeGuard.java
index c5514ee..b50e361 100644
--- a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/framework/agent/SystemAgentBridgeGuard.java
+++ b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/framework/agent/SystemAgentBridgeGuard.java
@@ -2,7 +2,6 @@
import cn.iocoder.yudao.framework.security.core.service.SecurityFrameworkService;
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
-import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder;
import jakarta.annotation.Resource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpStatus;
@@ -32,6 +31,8 @@
@Resource
private SecurityFrameworkService securityFrameworkService;
+ @Resource
+ private SystemAgentDelegationService delegationService;
public void verifyServiceToken(String provided) {
if (bridgeServiceToken == null || bridgeServiceToken.isBlank() || provided == null
@@ -40,6 +41,16 @@
throw new AgentBridgeException(HttpStatus.FORBIDDEN, "SERVICE_TOKEN_INVALID",
"鏅鸿兘浣撴湇鍔¤韩浠芥棤鏁堬紝璇锋鏌ユ湇鍔″瘑閽ラ厤缃�");
}
+ }
+
+ /** 鍙‘璁ゆ湇鍔¤韩浠戒笌褰撳墠鐧诲綍鐢ㄦ埛锛涘叿浣撹兘鍔涚敱璋冪敤鏂归�愰」鏀剁揣銆� */
+ public AgentPrincipal requireAuthenticated(String providedServiceToken) {
+ verifyServiceToken(providedServiceToken);
+ Long userId = SecurityFrameworkUtils.getLoginUserId();
+ if (userId == null) {
+ throw new AgentBridgeException(HttpStatus.UNAUTHORIZED, "UNAUTHORIZED", "鏈櫥褰曟垨鐧诲綍宸茶繃鏈�");
+ }
+ return principalOf(userId);
}
public AgentPrincipal require(String providedServiceToken, String permission) {
@@ -55,6 +66,15 @@
return principalOf(userId);
}
+ public AgentPrincipal require(String providedServiceToken, String delegationToken, String taskId,
+ String operation, String permission, String moduleId, Long attachmentId) {
+ verifyServiceToken(providedServiceToken);
+ if (delegationToken != null && !delegationToken.isBlank()) {
+ return delegationService.require(delegationToken, taskId, operation, permission, moduleId, attachmentId);
+ }
+ return require(providedServiceToken, permission);
+ }
+
/** 浼氳瘽涓庨檮浠跺叆鍙f棤娉曢鐭ユā鍧楋紝鍙姹傚叿澶囦换鎰忎竴椤瑰鍏ユ潈闄愩�� */
public AgentPrincipal requireAny(String providedServiceToken) {
verifyServiceToken(providedServiceToken);
@@ -68,8 +88,29 @@
return principalOf(userId);
}
+
+ public AgentPrincipal requireAny(String providedServiceToken, String delegationToken, String taskId,
+ String operation, String moduleId, Long attachmentId) {
+ if (delegationToken == null || delegationToken.isBlank()) {
+ return requireAny(providedServiceToken);
+ }
+ verifyServiceToken(providedServiceToken);
+ AgentBridgeException last = null;
+ for (String permission : IMPORT_PERMISSIONS) {
+ try {
+ return delegationService.require(delegationToken, taskId, operation, permission, moduleId, attachmentId);
+ } catch (AgentBridgeException ex) {
+ last = ex;
+ if (!"DELEGATION_SCOPE_MISMATCH".equals(ex.getErrorCode())
+ && !"DELEGATION_PERMISSION_REVOKED".equals(ex.getErrorCode())) {
+ throw ex;
+ }
+ }
+ }
+ throw last == null ? new AgentBridgeException(HttpStatus.FORBIDDEN, "FORBIDDEN", "濮旀墭绁ㄦ嵁鏉冮檺涓嶈冻") : last;
+ }
+
private AgentPrincipal principalOf(Long userId) {
- Long tenantId = TenantContextHolder.getTenantId();
- return new AgentPrincipal(userId, tenantId == null ? 0L : tenantId, "live");
+ return new AgentPrincipal(userId, "live");
}
}
--
Gitblit v1.9.3