FIX: Delete unconfirmed emails first if available (#13046)

Users can end up with the same email both as secondary and unconfirmed.
When they tried to delete the unconfirmed ones, the secondary one was
deleted.
This commit is contained in:
Dan Ungureanu
2021-05-13 09:14:00 +03:00
committed by GitHub
parent b690e7787e
commit 034a0493e3
3 changed files with 26 additions and 11 deletions

View File

@ -285,11 +285,10 @@ class UsersController < ApplicationController
guardian.ensure_can_edit!(user)
ActiveRecord::Base.transaction do
if email = user.user_emails.find_by(email: params[:email], primary: false)
email.destroy
DiscourseEvent.trigger(:user_updated, user)
elsif change_requests = user.email_change_requests.where(new_email: params[:email]).presence
if change_requests = user.email_change_requests.where(new_email: params[:email]).presence
change_requests.destroy_all
elsif user.user_emails.where(email: params[:email], primary: false).destroy_all.present?
DiscourseEvent.trigger(:user_updated, user)
else
return render json: failed_json, status: 428
end