Fix inefficient query when requesting a new confirmation email from a logged-in account (#25669)

This commit is contained in:
Claire 2023-07-02 16:08:58 +02:00 committed by GitHub
parent ba06a2f104
commit 180f0e6715
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -28,6 +28,24 @@ class Auth::ConfirmationsController < Devise::ConfirmationsController
resource.email = current_user.unconfirmed_email || current_user.email if user_signed_in? resource.email = current_user.unconfirmed_email || current_user.email if user_signed_in?
end end
def create
# Since we don't allow users to request confirmation emails for other accounts when they
# are already logged in, so we can cut on the expensive queries by simply reusing the
# current user.
if user_signed_in?
self.resource = current_user
resource.send_confirmation_instructions
else
self.resource = current_user || User.send_confirmation_instructions(resource_params)
end
if successfully_sent?(resource)
respond_with({}, location: after_resending_confirmation_instructions_path_for(resource_name))
else
respond_with(resource)
end
end
def confirm_captcha def confirm_captcha
check_captcha! do |message| check_captcha! do |message|
flash.now[:alert] = message flash.now[:alert] = message