新增注册邮箱名自定义字符过滤

This commit is contained in:
eoao
2025-11-16 12:52:37 +08:00
parent 025dc1fbdb
commit 0395992b5b
12 changed files with 79 additions and 25 deletions

View File

@@ -17,7 +17,7 @@ const accountService = {
async add(c, params, userId) {
const {addEmailVerify , addEmail, manyEmail, addVerifyCount, minEmailPrefix} = await settingService.query(c);
const { addEmailVerify , addEmail, manyEmail, addVerifyCount, minEmailPrefix, emailPrefixFilter } = await settingService.query(c);
let { email, token } = params;
@@ -43,6 +43,10 @@ const accountService = {
throw new BizError(t('minEmailPrefix', { msg: minEmailPrefix } ));
}
if (emailPrefixFilter.some(content => emailUtils.getName(email).includes(content))) {
throw new BizError(t('banEmailPrefix'));
}
let accountRow = await this.selectByEmailIncludeDel(c, email);
if (accountRow && accountRow.isDel === isDel.DELETE) {

View File

@@ -26,7 +26,7 @@ const loginService = {
const { email, password, token, code } = params;
let {regKey, register, registerVerify, regVerifyCount, minEmailPrefix} = await settingService.query(c)
let { regKey, register, registerVerify, regVerifyCount, minEmailPrefix, emailPrefixFilter } = await settingService.query(c)
if (oauth) {
registerVerify = settingConst.registerVerify.CLOSE;
@@ -45,6 +45,10 @@ const loginService = {
throw new BizError(t('minEmailPrefix', { msg: minEmailPrefix } ));
}
if (emailPrefixFilter.some(content => emailUtils.getName(email).includes(content))) {
throw new BizError(t('banEmailPrefix'));
}
if (emailUtils.getName(email).length > 64) {
throw new BizError(t('emailLengthLimit'));
}

View File

@@ -58,6 +58,8 @@ const settingService = {
setting.linuxdoCallbackUrl = c.env.linuxdo_callback_url;
setting.linuxdoSwitch = linuxdoSwitch;
setting.emailPrefixFilter = setting.emailPrefixFilter.split(",").filter(Boolean);
c.set?.('setting', setting);
return setting;
},
@@ -108,6 +110,11 @@ const settingService = {
Object.keys(resendTokens).forEach(domain => {
if (!resendTokens[domain]) delete resendTokens[domain];
});
if (Array.isArray(params.emailPrefixFilter)) {
params.emailPrefixFilter = params.emailPrefixFilter + '';
}
params.resendTokens = JSON.stringify(resendTokens);
await orm(c).update(setting).set({ ...params }).returning().get();
await this.refresh(c);