mirror of
https://github.com/codeninjasllc/discourse.git
synced 2024-11-23 15:48:43 -05:00
improve error message when trying to change email address to one used by a staged user
This commit is contained in:
parent
7dd89be741
commit
afacc70fbe
3 changed files with 17 additions and 1 deletions
|
@ -522,6 +522,7 @@ en:
|
|||
confirmed: "Your email has been updated."
|
||||
please_continue: "Continue to %{site_name}"
|
||||
error: "There was an error changing your email address. Perhaps the address is already in use?"
|
||||
error_staged: "There was an error changing your email address. The address is already in use by a staged user."
|
||||
already_done: "Sorry, this confirmation link is no longer valid. Perhaps your email was already changed?"
|
||||
authorizing_old:
|
||||
title: "Thanks for confirming your current email address"
|
||||
|
|
|
@ -26,7 +26,11 @@ class EmailUpdater
|
|||
email = Email.downcase(email_input.strip)
|
||||
EmailValidator.new(attributes: :email).validate_each(self, :email, email)
|
||||
|
||||
errors.add(:base, I18n.t('change_email.error')) if User.find_by_email(email)
|
||||
if existing_user = User.find_by_email(email)
|
||||
error_message = 'change_email.error'
|
||||
error_message << '_staged' if existing_user.staged?
|
||||
errors.add(:base, I18n.t(error_message))
|
||||
end
|
||||
|
||||
if errors.blank?
|
||||
args = {
|
||||
|
|
|
@ -5,6 +5,17 @@ describe EmailUpdater do
|
|||
let(:old_email) { 'old.email@example.com' }
|
||||
let(:new_email) { 'new.email@example.com' }
|
||||
|
||||
it "provides better error message when a staged user has the same email" do
|
||||
Fabricate(:user, staged: true, email: new_email)
|
||||
|
||||
user = Fabricate(:user, email: old_email)
|
||||
updater = EmailUpdater.new(user.guardian, user)
|
||||
updater.change_to(new_email)
|
||||
|
||||
expect(updater.errors).to be_present
|
||||
expect(updater.errors.messages[:base].first).to be I18n.t("change_email.error_staged")
|
||||
end
|
||||
|
||||
context 'as a regular user' do
|
||||
let(:user) { Fabricate(:user, email: old_email) }
|
||||
let(:updater) { EmailUpdater.new(user.guardian, user) }
|
||||
|
|
Loading…
Reference in a new issue