Quellcode durchsuchen

claudecode 授权登录校验

chenbiao vor 1 Jahr
Ursprung
Commit
bf25300370

+ 2 - 0
netflix-service/src/main/java/com/cyksj/service/claude/ClaudeCodeService.java

@@ -63,4 +63,6 @@ public interface ClaudeCodeService {
 	void invalidateUserCache(Long relationUserId);
 
 	ClaudeCodeUserInfoView getClaudeCodeUserSubsInfo(Long userId);
+
+	Boolean checkClaudeCodeUser(Long userId);
 }

+ 1 - 0
netflix-service/src/main/java/com/cyksj/service/claude/impl/ClaudeCodeServiceImpl.java

@@ -371,6 +371,7 @@ public class ClaudeCodeServiceImpl implements ClaudeCodeService {
 	 * @param userId
 	 * @return
 	 */
+	@Override
 	public Boolean checkClaudeCodeUser(Long userId) {
 		List<Long> userIdList = userBindRelationService.getRelationUserIdList(userId, null);
 		Integer count = relationMapper.selectCountByGoodsId(userIdList, Constant.CLAUDE_CODE_GOODS_ID, DateTime.now());

+ 22 - 21
netflix-service/src/main/java/com/cyksj/service/claude/impl/OAuthClaudeCodeServiceImpl.java

@@ -57,27 +57,28 @@ public class OAuthClaudeCodeServiceImpl implements OAuthClaudeCodeService {
      */
     @Override
     public String generateAccessToken(Long userId, String clientId) throws Exception {
-
-        List<ClaudeCodeUserApiKeysView> userApiKeys = claudeCodeService.getUserApiKeys(userId);
-        if (CollectionUtil.isEmpty(userApiKeys)) {
-            ClaudeCodeApiKeysReq claudeCodeApiKeysReq = new ClaudeCodeApiKeysReq();
-            claudeCodeApiKeysReq.setName("系统创建");
-            claudeCodeApiKeysReq.setUserId(userId);
-            claudeCodeApiKeysReq.setExpiresDays(30);
-            ClaudeCodeResp apiKeys = claudeCodeService.createApiKeys(claudeCodeApiKeysReq);
-            JSONObject jsonObject = new JSONObject(apiKeys.getData());
-            String token = jsonObject.getStr("key_value");
-            // 保存token
-            OAuthToken oAuthToken = new OAuthToken();
-            oAuthToken.setTokenValue(token);
-            oAuthToken.setUserId(userId);
-            oAuthToken.setClientId(clientId);
-            oAuthToken.setStatus(1);
-            oAuthToken.setCreatedTime(new Date());
-
-            oauthTokenMapper.insert(oAuthToken);
-            return token;
-
+        if (claudeCodeService.checkClaudeCodeUser(userId)) {
+            List<ClaudeCodeUserApiKeysView> userApiKeys = claudeCodeService.getUserApiKeys(userId);
+            if (CollectionUtil.isEmpty(userApiKeys)) {
+                ClaudeCodeApiKeysReq claudeCodeApiKeysReq = new ClaudeCodeApiKeysReq();
+                claudeCodeApiKeysReq.setName("系统创建");
+                claudeCodeApiKeysReq.setUserId(userId);
+                claudeCodeApiKeysReq.setExpiresDays(30);
+                ClaudeCodeResp apiKeys = claudeCodeService.createApiKeys(claudeCodeApiKeysReq);
+                JSONObject jsonObject = new JSONObject(apiKeys.getData());
+                String token = jsonObject.getStr("key_value");
+                // 保存token
+                OAuthToken oAuthToken = new OAuthToken();
+                oAuthToken.setTokenValue(token);
+                oAuthToken.setUserId(userId);
+                oAuthToken.setClientId(clientId);
+                oAuthToken.setStatus(1);
+                oAuthToken.setCreatedTime(new Date());
+
+                oauthTokenMapper.insert(oAuthToken);
+                return token;
+
+            }
         }
 
         return null;

+ 3 - 2
netflix-web/src/main/java/com/cyksj/web/controller/claude/ClaudeCodeController.java

@@ -235,11 +235,12 @@ public class ClaudeCodeController {
 				response.sendRedirect(loginUrl);
 				return;
 			}
-
 			// 用户已登录,生成token
 			Long userId = StpUserUtil.getLoginIdAsLong();
 			String token = oAuthClaudeCodeService.generateAccessToken(userId, clientId);
-
+			if (token == null) {
+				throw BusinessRuntimeException.getInstance("您还没有claudecode账号");
+			}
 			// 重定向回客户端
 			String callbackUrl = redirectUri + "?token=" + token + "&state=" + state;
 			response.sendRedirect(callbackUrl);