lib/devise/multi_email/models/confirmable.rb in devise-multi_email-2.0.0 vs lib/devise/multi_email/models/confirmable.rb in devise-multi_email-2.0.1
- old
+ new
@@ -6,16 +6,16 @@
extend ActiveSupport::Concern
included do
devise :confirmable
- extend ClassReplacementMethods
+ include ConfirmableExtensions
end
- module ClassReplacementMethods
- def allow_unconfirmed_access_for
- 0.days
+ module ConfirmableExtensions
+ def confirmation_period_valid?
+ primary? ? super : false
end
end
end
module MultiEmailConfirmable
@@ -43,24 +43,30 @@
# delegate before creating overriding methods
delegate :skip_confirmation!, :skip_confirmation_notification!, :skip_reconfirmation!, :confirmation_required?,
:confirmation_token, :confirmed_at, :confirmation_sent_at, :confirm, :confirmed?, :unconfirmed_email,
:reconfirmation_required?, :pending_reconfirmation?, to: :primary_email_record, allow_nil: true
+ # In case email updates are being postponed, don't change anything
+ # when the postpone feature tries to switch things back
+ def email=(new_email)
+ multi_email.change_primary_email_to(new_email, allow_unconfirmed: false)
+ end
+
# This need to be forwarded to the email that the user logged in with
def active_for_authentication?
- login_email = current_login_email_record
+ login_email = multi_email.login_email_record
if login_email && !login_email.primary?
super && login_email.active_for_authentication?
else
super
end
end
# Shows email not confirmed instead of account inactive when the email that user used to login is not confirmed
def inactive_message
- login_email = current_login_email_record
+ login_email = multi_email.login_email_record
if login_email && !login_email.primary? && !login_email.confirmed?
:unconfirmed
else
super
@@ -85,15 +91,9 @@
# Email will send confirmation instructions.
def send_on_create_confirmation_instructions
end
private
-
- def current_login_email_record
- if respond_to?(:current_login_email) && current_login_email
- multi_email.emails.find_by(email: current_login_email)
- end
- end
module ClassMethods
delegate :confirm_by_token, :send_confirmation_instructions, to: 'multi_email_association.model_class', allow_nil: false
end
end