From 193f571295f47a40ea6b5e501776c8ff0432a9d4 Mon Sep 17 00:00:00 2001 From: zhuo <2089219845@qq.com> Date: 星期日, 16 三月 2025 13:39:00 +0800 Subject: [PATCH] 原材料树查询修改 --- ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java | 58 +++++++++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 49 insertions(+), 9 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 b6841dd..c0b181b 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 @@ -9,6 +9,7 @@ import com.ruoyi.common.core.domain.entity.User; import com.ruoyi.framework.model.SsoOauthTokenModel; import com.ruoyi.framework.model.SsoUserInfoModel; +import com.ruoyi.framework.web.ssoAuth.SsoCodeAuthenticationToken; import com.ruoyi.system.mapper.UserMapper; import lombok.extern.slf4j.Slf4j; import org.apache.http.HttpEntity; @@ -93,9 +94,6 @@ @Autowired private RedisTemplate redisTemplate; - - @Autowired - private UserMapper userMapper; /** * 鐧诲綍楠岃瘉 @@ -234,26 +232,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.single.login.success"))); + // 鍒涘缓鐧诲綍淇℃伅 + 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