|
|
@@ -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());
|
|
|
- }
|
|
|
-
|
|
|
|
|
|
}
|