Skip to content

Commit 93c7be7

Browse files
authored
fix: verify email domain in ChangeEmail as well (#175)
1 parent fb0ab37 commit 93c7be7

File tree

1 file changed

+12
-3
lines changed

1 file changed

+12
-3
lines changed

src/GZCTF/Controllers/AccountController.cs

+12-3
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,7 @@ public async Task<IActionResult> Register([FromBody] RegisterModel model, Cancel
5151
if (accountPolicy.Value.UseCaptcha && !await captcha.VerifyAsync(model, HttpContext, token))
5252
return BadRequest(new RequestResponse("验证码校验失败"));
5353

54-
var mailDomain = model.Email.Split('@')[1];
55-
if (!string.IsNullOrWhiteSpace(accountPolicy.Value.EmailDomainList) &&
56-
accountPolicy.Value.EmailDomainList.Split(',').All(d => d != mailDomain))
54+
if (!VerifyEmailDomain(model.Email.Split('@')[1]))
5755
return BadRequest(new RequestResponse($"可用邮箱后缀:{accountPolicy.Value.EmailDomainList}"));
5856

5957
var user = new UserInfo { UserName = model.UserName, Email = model.Email, Role = Role.User };
@@ -111,6 +109,14 @@ public async Task<IActionResult> Register([FromBody] RegisterModel model, Cancel
111109
RegisterStatus.EmailConfirmationRequired, StatusCodes.Status200OK));
112110
}
113111

112+
private bool VerifyEmailDomain(string email)
113+
{
114+
var mailDomain = email.Split('@')[1];
115+
116+
return string.IsNullOrWhiteSpace(accountPolicy.Value.EmailDomainList)
117+
|| accountPolicy.Value.EmailDomainList.Split(',', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries).Any(d => d.Equals(mailDomain, StringComparison.InvariantCulture));
118+
}
119+
114120
/// <summary>
115121
/// 用户找回密码请求接口
116122
/// </summary>
@@ -374,6 +380,9 @@ public async Task<IActionResult> ChangeEmail([FromBody] MailChangeModel model)
374380
if (await userManager.FindByEmailAsync(model.NewMail) is not null)
375381
return BadRequest(new RequestResponse("邮箱已经被占用"));
376382

383+
if (!VerifyEmailDomain(model.NewMail.Split('@')[1]))
384+
return BadRequest(new RequestResponse($"可用邮箱后缀:{accountPolicy.Value.EmailDomainList}"));
385+
377386
UserInfo? user = await userManager.GetUserAsync(User);
378387

379388
if (!accountPolicy.Value.EmailConfirmationRequired)

0 commit comments

Comments
 (0)