diff --git a/app/mailers/devise_user_mailer.rb b/app/mailers/devise_user_mailer.rb index eab62ff29..2d4822bff 100644 --- a/app/mailers/devise_user_mailer.rb +++ b/app/mailers/devise_user_mailer.rb @@ -15,7 +15,7 @@ class DeviseUserMailer < Devise::Mailer def confirmation_instructions(record, token, opts = {}) opts[:from] = NO_REPLY_EMAIL - @procedure = CurrentConfirmation.procedure_after_confirmation || nil + @procedure = opts[:procedure_after_confirmation] || nil super end end diff --git a/app/models/user.rb b/app/models/user.rb index 1515ed760..72dc84cc4 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -25,6 +25,20 @@ class User < ApplicationRecord before_validation -> { sanitize_email(:email) } + # Override of Devise::Models::Confirmable#send_confirmation_instructions + def send_confirmation_instructions + unless @raw_confirmation_token + generate_confirmation_token! + end + + opts = pending_reconfirmation? ? { to: unconfirmed_email } : {} + + # Make our procedure_after_confirmation available to the Mailer + opts[:procedure_after_confirmation] = CurrentConfirmation.procedure_after_confirmation + + send_devise_notification(:confirmation_instructions, @raw_confirmation_token, opts) + end + # Callback provided by Devise def after_confirmation link_invites!