From 8ea6f6fd6f659768662b670455e54ffd54b04298 Mon Sep 17 00:00:00 2001
From: zhuo <2089219845@qq.com>
Date: 星期三, 19 三月 2025 10:58:03 +0800
Subject: [PATCH] 解决报告生成问题, 去除验证码

---
 ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java |   70 +++++++++++++++++++++++++++++-----
 1 files changed, 59 insertions(+), 11 deletions(-)

diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java
index 05fbbf4..bc666cb 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java
@@ -4,11 +4,10 @@
 import javax.net.ssl.SSLContext;
 
 import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.PropertyNamingStrategy;
-import com.alibaba.fastjson.parser.ParserConfig;
 import com.ruoyi.common.config.SsoBean;
 import com.ruoyi.framework.model.SsoOauthTokenModel;
 import com.ruoyi.framework.model.SsoUserInfoModel;
+import com.ruoyi.framework.web.ssoAuth.SsoCodeAuthenticationToken;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.http.HttpEntity;
 import org.apache.http.HttpStatus;
@@ -24,6 +23,7 @@
 import org.apache.http.ssl.TrustStrategy;
 import org.apache.http.util.EntityUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.security.authentication.AuthenticationManager;
 import org.springframework.security.authentication.BadCredentialsException;
 import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
@@ -60,6 +60,7 @@
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.TimeUnit;
 
 /**
  * 鐧诲綍鏍¢獙鏂规硶
@@ -80,13 +81,16 @@
     private RedisCache redisCache;
 
     @Autowired
-    private ISysUserService userService;
+    private ISysUserService sysUserService;
 
     @Autowired
     private ISysConfigService configService;
 
     @Autowired
     private SsoBean ssoBean;
+
+    @Autowired
+    private RedisTemplate redisTemplate;
 
     /**
      * 鐧诲綍楠岃瘉
@@ -99,8 +103,8 @@
      */
     public String login(String username, String password, String code, String uuid)
     {
-        // 楠岃瘉鐮佹牎楠�
-        validateCaptcha(username, code, uuid);
+//        // 楠岃瘉鐮佹牎楠�
+//        validateCaptcha(username, code, uuid);
         // 鐧诲綍鍓嶇疆鏍¢獙
         loginPreCheck(username, password);
         // 鐢ㄦ埛楠岃瘉
@@ -212,7 +216,7 @@
         sysUser.setUserId(userId);
         sysUser.setLoginIp(IpUtils.getIpAddr());
         sysUser.setLoginDate(DateUtils.getNowDate());
-        userService.updateUserProfile(sysUser);
+        sysUserService.updateUserProfile(sysUser);
     }
 
     /**
@@ -225,24 +229,68 @@
         // 鑾峰彇鍗曠偣鐧诲綍token
         SsoOauthTokenModel tokenModel = this.getSsoAccessToken(code);
         if (tokenModel == null) {
-            return null;
+            throw new RuntimeException("鍗曠偣鐧诲綍楠岃瘉澶辫触");
         }
 
         // 鑾峰彇鍗曠偣鐧诲綍鐢ㄦ埛淇℃伅
         SsoUserInfoModel userInfo = this.getSsoUserInfo(tokenModel.getAccess_token());
         if (userInfo == null) {
-            return null;
+            throw new RuntimeException("鍗曠偣鐧诲綍楠岃瘉澶辫触");
         }
 
         // 鏌ヨ鏈湴鐢ㄦ埛淇℃伅
+        LoginUser loginUser = this.getSsoLoginToken(userInfo.getEmployeeId());
+        recordLoginInfo(loginUser.getUserId());
 
-
-
+        // 鍒涘缓鐧诲綍淇℃伅
+        AsyncManager.me().execute(AsyncFactory.recordLogininfor(userInfo.getEmployeeId(), Constants.LOGIN_SUCCESS, MessageUtils.message("user.sso.login.success")));
+        redisTemplate.opsForValue().set("ssoOauthToken:idToken:" + userInfo.getEmployeeId(), tokenModel.getId_token(), 3, TimeUnit.DAYS);
         // 鐢熸垚token
-        return tokenService.createToken(null);
+        return tokenService.createToken(loginUser);
     }
 
     /**
+     * ***** 鑾峰彇鏈湴鐢ㄦ埛淇℃伅 *****
+     * @param username
+     * @return
+     */
+    public LoginUser getSsoLoginToken(String username) {
+        // 鐢ㄦ埛楠岃瘉
+        Authentication authentication = null;
+        SysUser sysUser = sysUserService.selectUserByUserName(username);
+        if (sysUser == null) {
+            throw new ServiceException("褰撳墠绯荤粺娌℃湁璇ョ敤鎴�");
+        }
+        try
+        {
+            // 鏃犻渶瀵嗙爜鑾峰彇鐢ㄦ埛淇℃伅
+            authentication = authenticationManager.authenticate(new SsoCodeAuthenticationToken(username));
+        }
+        catch (Exception e)
+        {
+            if (e instanceof BadCredentialsException)
+            {
+                AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.sso.not.match")));
+                throw new UserPasswordNotMatchException();
+            }
+            else
+            {
+                AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, e.getMessage()));
+                throw new ServiceException(e.getMessage());
+            }
+        }
+        finally
+        {
+            AuthenticationContextHolder.clearContext();
+        }
+        AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.sso.login.success")));
+        return (LoginUser) authentication.getPrincipal();
+
+    }
+
+
+
+    /**
      * **** 鑾峰彇鍗曠偣鐧诲綍token ****
      * @param code
      * @return

--
Gitblit v1.9.3