FEATURE: Add email normalization rules setting (#14593)

When this setting is turned on, it will check that normalized emails
are unique. Normalized emails are emails without any dots or plus
aliases.

This setting can be used to block use of aliases of the same email
address.
This commit is contained in:
Bianca Nenciu
2021-11-24 11:30:06 +02:00
committed by GitHub
parent a6aff40e4b
commit 3ea8937157
6 changed files with 76 additions and 8 deletions

View File

@ -26,6 +26,32 @@ describe UserEmail do
end
end
describe 'normalized_email' do
it 'checks if normalized email is unique' do
SiteSetting.normalize_emails = true
user_email = user.user_emails.create(email: "a.b+c@example.com", primary: false)
expect(user_email.normalized_email).to eq("ab@example.com")
expect(user_email).to be_valid
user_email = user.user_emails.create(email: "a.b+d@example.com", primary: false)
expect(user_email.normalized_email).to eq("ab@example.com")
expect(user_email).not_to be_valid
end
it 'does not check uniqueness if email normalization is not enabled' do
SiteSetting.normalize_emails = false
user_email = user.user_emails.create(email: "a.b+c@example.com", primary: false)
expect(user_email.normalized_email).to eq("ab@example.com")
expect(user_email).to be_valid
user_email = user.user_emails.create(email: "a.b+d@example.com", primary: false)
expect(user_email.normalized_email).to eq("ab@example.com")
expect(user_email).to be_valid
end
end
context "indexes" do
it "allows only one primary email" do
expect {