Commit 844a579a authored by alex yao's avatar alex yao

fix:Agent API 用户校验

parent d8d08355
...@@ -17,12 +17,17 @@ import cn.com.poc.equity.constants.ModifyEventEnum; ...@@ -17,12 +17,17 @@ import cn.com.poc.equity.constants.ModifyEventEnum;
import cn.com.poc.equity.domain.modifyEquityInfo.AgentUseModifyEventInfo; import cn.com.poc.equity.domain.modifyEquityInfo.AgentUseModifyEventInfo;
import cn.com.poc.expose.aggregate.AgentApplicationApiService; import cn.com.poc.expose.aggregate.AgentApplicationApiService;
import cn.com.poc.knowledge.aggregate.KnowledgeService; import cn.com.poc.knowledge.aggregate.KnowledgeService;
import cn.com.poc.support.security.oauth.constants.OauthConstants;
import cn.com.poc.thirdparty.resource.demand.ai.constants.LLMRoleEnum; import cn.com.poc.thirdparty.resource.demand.ai.constants.LLMRoleEnum;
import cn.com.poc.thirdparty.resource.demand.ai.entity.dialogue.Message; import cn.com.poc.thirdparty.resource.demand.ai.entity.dialogue.Message;
import cn.com.poc.thirdparty.resource.demand.ai.entity.dialogue.Tool; import cn.com.poc.thirdparty.resource.demand.ai.entity.dialogue.Tool;
import cn.com.yict.framemax.core.exception.BusinessException; import cn.com.yict.framemax.core.exception.BusinessException;
import cn.com.yict.framemax.security.authentication.SecurityAuthenticationToken;
import cn.com.yict.framemax.security.oauth.OauthUserManager;
import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.FileUtil;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.springframework.security.core.context.SecurityContext;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
...@@ -75,6 +80,8 @@ public class AgentApplicationApiServiceImpl implements AgentApplicationApiServic ...@@ -75,6 +80,8 @@ public class AgentApplicationApiServiceImpl implements AgentApplicationApiServic
@Resource @Resource
private DataAnalyzeReportService dataAnalyzeReportService; private DataAnalyzeReportService dataAnalyzeReportService;
@Resource
private OauthUserManager userManager;
@Override @Override
public String conversation(String apiKey, String apiSecret, String agentId) throws Exception { public String conversation(String apiKey, String apiSecret, String agentId) throws Exception {
...@@ -122,6 +129,8 @@ public class AgentApplicationApiServiceImpl implements AgentApplicationApiServic ...@@ -122,6 +129,8 @@ public class AgentApplicationApiServiceImpl implements AgentApplicationApiServic
if (!infoEntity.getMemberId().equals(profileEntity.getMemberId().intValue())) { if (!infoEntity.getMemberId().equals(profileEntity.getMemberId().intValue())) {
throw new BusinessException("无权限"); throw new BusinessException("无权限");
} }
//配置用户上下文信息
setAPIUserInfoContext(profileEntity);
// 获取文件列表 // 获取文件列表
List<String> fileUrls = getFileUrls(conversationId, fileIds, agentId); List<String> fileUrls = getFileUrls(conversationId, fileIds, agentId);
...@@ -164,6 +173,13 @@ public class AgentApplicationApiServiceImpl implements AgentApplicationApiServic ...@@ -164,6 +173,13 @@ public class AgentApplicationApiServiceImpl implements AgentApplicationApiServic
dataAnalyzeReportService.dataReport(agentId, DataAnalyzeChannelEnum.api, profileEntity.getMemberId(), deducted, pointDeductionNum); dataAnalyzeReportService.dataReport(agentId, DataAnalyzeChannelEnum.api, profileEntity.getMemberId(), deducted, pointDeductionNum);
} }
private void setAPIUserInfoContext(BizAgentApplicationApiProfileEntity profileEntity) {
SecurityAuthenticationToken securityAuthenticationToken = this.userManager.authUser(OauthConstants.TypePrefix.MEMBER_DOMAIN + profileEntity.getMemberId().toString(), null, null);
SecurityContext sc = SecurityContextHolder.getContext();
sc.setAuthentication(securityAuthenticationToken);
SecurityContextHolder.setContext(sc);
}
private void saveRecord(String conversationId, String query, String agentId, BizAgentApplicationApiProfileEntity profileEntity, Long inputTimestamp, BizAgentApplicationPublishEntity infoEntity, String output) throws Exception { private void saveRecord(String conversationId, String query, String agentId, BizAgentApplicationApiProfileEntity profileEntity, Long inputTimestamp, BizAgentApplicationPublishEntity infoEntity, String output) throws Exception {
//保存对话记录 //保存对话记录
BizAgentApplicationDialoguesRecordEntity inputRecord = new BizAgentApplicationDialoguesRecordEntity(); BizAgentApplicationDialoguesRecordEntity inputRecord = new BizAgentApplicationDialoguesRecordEntity();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment