deason 5 роки тому
батько
коміт
ecf13e5458

+ 10 - 4
examcloud-core-basic-service/src/main/java/cn/com/qmth/examcloud/core/basic/service/impl/AuthServiceImpl.java

@@ -10,10 +10,7 @@ import cn.com.qmth.examcloud.core.basic.base.constants.PropKeys;
 import cn.com.qmth.examcloud.core.basic.base.enums.AccountType;
 import cn.com.qmth.examcloud.core.basic.dao.*;
 import cn.com.qmth.examcloud.core.basic.dao.entity.*;
-import cn.com.qmth.examcloud.core.basic.service.AuthService;
-import cn.com.qmth.examcloud.core.basic.service.SmsCodeService;
-import cn.com.qmth.examcloud.core.basic.service.SystemPropertyService;
-import cn.com.qmth.examcloud.core.basic.service.UserService;
+import cn.com.qmth.examcloud.core.basic.service.*;
 import cn.com.qmth.examcloud.core.basic.service.bean.LoginInfo;
 import cn.com.qmth.examcloud.support.cache.CacheHelper;
 import cn.com.qmth.examcloud.support.cache.bean.OrgCacheBean;
@@ -43,6 +40,9 @@ import java.util.Set;
 @Service
 public class AuthServiceImpl implements AuthService {
 
+    @Autowired
+    LoginRuleService loginRuleService;
+
     @Autowired
     RedisClient redisClient;
 
@@ -223,6 +223,12 @@ public class AuthServiceImpl implements AuthService {
             }
 
         } else {
+            // 是否在登录的白名单
+            boolean isWhite = loginRuleService.isLoginRuleWhite(rootOrgId);
+            if (!isWhite) {
+                throw new StatusException("500403", "当前机构登录被禁用");
+            }
+
             // 学生学号登录
             if (AccountType.STUDENT_CODE.equals(accountTypeEnum)) {
                 StudentCodeEntity scEntity = studentCodeRepo

+ 2 - 1
examcloud-core-basic-service/src/main/java/cn/com/qmth/examcloud/core/basic/service/impl/LoginRuleServiceImpl.java

@@ -1,5 +1,6 @@
 package cn.com.qmth.examcloud.core.basic.service.impl;
 
+import cn.com.qmth.examcloud.commons.exception.StatusException;
 import cn.com.qmth.examcloud.commons.logging.ExamCloudLog;
 import cn.com.qmth.examcloud.commons.logging.ExamCloudLogFactory;
 import cn.com.qmth.examcloud.core.basic.dao.LoginRuleRepo;
@@ -50,7 +51,7 @@ public class LoginRuleServiceImpl implements LoginRuleService {
     @Override
     public boolean isLoginRuleWhite(Long rootOrgId) {
         if (rootOrgId == null) {
-            return false;
+            throw new StatusException("400400", "顶层机构ID不能为空");
         }
 
         LoginRuleCacheBean cacheBean = redisClient.get(CACHE_KEY_LOGIN_RULE, String.valueOf(rootOrgId), LoginRuleCacheBean.class);