Explorar el Código

注册邮箱白名单校验

30262728@qq.com hace 2 semanas
padre
commit
7fb3fba10c

+ 11 - 0
qnfhq-api/src/main/java/com/qnfhq/modules/user/enums/SettingEnum.java

@@ -86,5 +86,16 @@ public enum SettingEnum {
     //充值手续费
     CHARGE_FEE,
 
+    //重新实名认证
+    RE_KYC_SETTING,
+
+    /**
+     * 邮箱白名单
+     */
+    EMAIL_WHITE_SET,
+    /**
+     * 拒绝交易的币种和交易类型
+     */
+    REFUSE_SUBMIT
     ;
 }

+ 21 - 33
qnfhq-api/src/main/java/com/qnfhq/utils/EmailValidUtils.java

@@ -1,8 +1,15 @@
 package com.qnfhq.utils;
 
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.setting.Setting;
 import com.qnfhq.common.exception.RenException;
 import com.qnfhq.common.utils.MessageUtils;
+import com.qnfhq.common.utils.SpringContextUtils;
+import com.qnfhq.modules.user.entity.SettingEntity;
+import com.qnfhq.modules.user.enums.SettingEnum;
+import com.qnfhq.modules.user.service.SettingService;
 
+import java.util.Arrays;
 import java.util.HashSet;
 import java.util.Set;
 
@@ -15,37 +22,25 @@ import java.util.Set;
  */
 public class EmailValidUtils {
 
-    // 常见临时邮箱域名
-    private final static Set<String> TEMP_DOMAINS = new HashSet<>(Set.of(
-            "tempmail.com", "10minutemail.com", "guerrillamail.com",
-            "mailinator.com", "yopmail.com", "throwawaymail.com",
-            "temp-mail.org", "fakeinbox.com", "disposableemail.com",
-            "trashmail.com", "getairmail.com", "tempail.com",
-            "maildrop.cc", "sharklasers.com", "guerrillamail.net",
-            "grr.la", "spam4.me", "dispostable.com",
-            "tmpmail.org", "owleyes.ch", "33mail.com"
-    ));
-
-    // 常见可信邮箱域名(知名邮箱服务商)
-//    private final static Set<String> TRUSTED_DOMAINS = new HashSet<>(Set.of(
-//            "gmail.com", "outlook.com", "hotmail.com", "yahoo.com",
-//            "qq.com", "163.com", "126.com", "sina.com","sina.cn",
-//            "sohu.com", "icloud.com", "aol.com", "protonmail.com",
-//            "live.com", "msn.com", "foxmail.com", "139.com"
-//    ));
-
-
-
     /**
      * 邮箱验证
      */
     public static void validateEmail(String email) {
-
+        //大小写空格检查
+        String lowerCaseTrimEmail = email.toLowerCase().replaceAll(" ","");
+        if(!lowerCaseTrimEmail.equals(email)) {
+            throw new RenException(MessageUtils.message("user.register.email.must.lowerCase"));//请使用小写邮箱并检查空白行
+        }
+        email=email.trim();
         String domain = extractDomain(email);
-
-        // 临时邮箱检测
-        if (isTempEmailDomain(domain)) {
-            throw new RenException(MessageUtils.message("user.register.email.isTemp"));//检测到临时邮箱,请使用真实邮箱
+        SettingService settingService = SpringContextUtils.getBean(SettingService.class);
+
+        //邮箱白名单
+        SettingEntity byId = settingService.getSetting(SettingEnum.EMAIL_WHITE_SET.name());
+        String settingValue = byId.getSettingValue();
+        Set<String> domains = new HashSet<>(Arrays.asList(settingValue.split(",")));
+        if(!domains.contains(domain)){
+            throw new RenException(MessageUtils.message("user.register.email.isTemp"));//检测到临时邮箱,请使用常见可信邮箱
         }
 
     }
@@ -61,12 +56,5 @@ public class EmailValidUtils {
         return "";
     }
 
-    /**
-     * 检查是否为临时邮箱域名
-     */
-    public static boolean isTempEmailDomain(String domain) {
-        return TEMP_DOMAINS.contains(domain.toLowerCase());
-    }
-
 
 }

+ 4 - 1
qnfhq-api/src/main/resources/i18n/messages_zh.properties

@@ -47,10 +47,13 @@ user.not.exist=\u7528\u6237\u4e0d\u5b58\u5728
 code.try.times.limit=\u91cd\u8bd5\u6b21\u6570\u8fc7\u591a
 user.sendcode.frequency.limit=\u9a8c\u8bc1\u7801\u8bf7\u6c42\u592a\u8fc7\u9891\u7387\uff0c\u8bf760\u79d2\u540e\u518d\u8bd5
 user.email.send.fail=\u90ae\u7bb1\u53d1\u9001\u5931\u8d25
-user.register.email.isTemp=\u68c0\u6d4b\u5230\u4e34\u65f6\u90ae\u7bb1\uff0c\u8bf7\u4f7f\u7528\u771f\u5b9e\u90ae\u7bb1
 system.busy.try.again.later=\u7cfb\u7edf\u7e41\u5fd9\uff0c\u8bf7\u7a0d\u540e\u518d\u8bd5
 user.register.phone.exisit=\u624b\u673a\u53f7\u5df2\u5b58\u5728
 appUser.loginName.or.password.err.limit.chance=\u8d26\u53f7\u6216\u5bc6\u7801\u9519\u8bef\uff0c\u60a8\u8fd8\u6709{0}\u6b21\u673a\u4f1a
 pwd.fail.times.excess.hour.lock=\u8d26\u53f7\u5df2\u9501\uff0c{0}\u5206\u949f\u540e\u89e3\u9501
 pwd.fail.times.excess.day.lock=\u8d26\u53f7\u5df2\u9501\uff0c{0}\u5c0f\u65f6\u540e\u89e3\u9501
 pwd.fail.times.excess.second.lock=\u8d26\u53f7\u5df2\u9501\uff0c{0}\u79d2\u540e\u89e3\u9501
+user.register.email.must.lowerCase=\u8bf7\u4f7f\u7528\u5c0f\u5199\u90ae\u7bb1\u5e76\u68c0\u67e5\u7a7a\u767d\u884c
+user.register.email.isTemp=\u68c0\u6d4b\u5230\u4e34\u65f6\u90ae\u7bb1\uff0c\u8bf7\u4f7f\u7528\u5e38\u89c1\u53ef\u4fe1\u90ae\u7bb1
+
+