From bedff910eb2394a8ce68762a8f3a413d81187ac1 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期五, 10 七月 2026 09:17:34 +0800
Subject: [PATCH] 后台

---
 ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java |   54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 54 insertions(+), 0 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 ddab783..980ebe7 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
@@ -60,6 +60,18 @@
     @Autowired
     private TAppUserService appUserService;
 
+    public LoginUser loginByTrustedUsername(String username, String loginSource, String middlePlatformToken)
+    {
+        loginUsernamePreCheck(username);
+        SysUser user = validateLocalUser(username);
+        LoginUser loginUser = new LoginUser(user.getUserId(), user.getDeptId(), user, permissionService.getMenuPermission(user));
+        loginUser.setLoginSource(loginSource);
+        loginUser.setMiddlePlatformToken(middlePlatformToken);
+        AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
+        recordLoginInfo(loginUser.getUserId());
+        return loginUser;
+    }
+
     /**
      * 登录验证
      * 
@@ -74,6 +86,11 @@
         // 验证码校验
         validateCaptcha(username, code, uuid);
         // 登录前置校验
+        return loginWithoutCaptcha(username, password);
+    }
+
+    public LoginUser loginWithoutCaptcha(String username, String password)
+    {
         loginPreCheck(username, password);
         // 用户验证
         Authentication authentication = null;
@@ -233,6 +250,43 @@
      * @param uuid 唯一标识
      * @return 结果
      */
+    private void loginUsernamePreCheck(String username)
+    {
+        if (StringUtils.isEmpty(username))
+        {
+            AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("not.null")));
+            throw new UserNotExistsException();
+        }
+        if (username.length() < UserConstants.USERNAME_MIN_LENGTH
+                || username.length() > UserConstants.USERNAME_MAX_LENGTH)
+        {
+            AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match")));
+            throw new UserPasswordNotMatchException();
+        }
+        String blackStr = configService.selectConfigByKey("sys.login.blackIPList");
+        if (IpUtils.isMatchedIp(blackStr, IpUtils.getIpAddr()))
+        {
+            AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("login.blocked")));
+            throw new BlackListException();
+        }
+    }
+
+    private SysUser validateLocalUser(String username)
+    {
+        SysUser user = userService.selectUserByUserName(username);
+        if (StringUtils.isNull(user)){
+            log.info("登录用户:{} 不存在.", username);
+            throw new ServiceException(MessageUtils.message("user.not.exists"));
+        } else if (UserStatus.DELETED.getCode().equals(user.getDelFlag())) {
+            log.info("登录用户:{} 已被删除.", username);
+            throw new ServiceException(MessageUtils.message("user.password.delete"));
+        } else if (UserStatus.DISABLE.getCode().equals(user.getStatus())) {
+            log.info("登录用户:{} 已被停用.", username);
+            throw new ServiceException(MessageUtils.message("user.blocked"));
+        }
+        return user;
+    }
+
     public void validateCaptcha(String username, String code, String uuid)
     {
         String verifyKey = CacheConstants.CAPTCHA_CODE_KEY + StringUtils.nvl(uuid, "");

--
Gitblit v1.7.1