Only validate for duplicate member email address when configured to do so (#18747)

* Only validate for duplicate member email address when configured to do so.

* Lookup member after creation by user name rather than email, as only the former is guaranteed to be unique.
This commit is contained in:
Andy Butland
2025-03-24 12:02:50 +01:00
committed by GitHub
parent 394210a8f7
commit 30633fe728

View File

@@ -116,8 +116,8 @@ internal sealed class MemberEditingService : IMemberEditingService
return IdentityMemberCreationFailed(createResult, status);
}
IMember member = _memberService.GetByEmail(createModel.Email)
?? throw new InvalidOperationException("Member creation succeeded, but member could not be found by email.");
IMember member = _memberService.GetByUsername(createModel.Username)
?? throw new InvalidOperationException("Member creation succeeded, but member could not be found by username.");
var updateRolesResult = await UpdateRoles(createModel.Roles, identityMember);
if (updateRolesResult is false)
@@ -283,10 +283,13 @@ internal sealed class MemberEditingService : IMemberEditingService
return MemberEditingOperationStatus.DuplicateUsername;
}
IMember? byEmail = _memberService.GetByEmail(model.Email);
if (byEmail is not null && byEmail.Key != memberKey)
if (_securitySettings.MemberRequireUniqueEmail)
{
return MemberEditingOperationStatus.DuplicateEmail;
IMember? byEmail = _memberService.GetByEmail(model.Email);
if (byEmail is not null && byEmail.Key != memberKey)
{
return MemberEditingOperationStatus.DuplicateEmail;
}
}
return MemberEditingOperationStatus.Success;