module Sorcery::Model::Submodules::MagicLogin::InstanceMethods

Public Instance Methods

clear_magic_login_token!() click to toggle source

Clears the token.

# File lib/sorcery/model/submodules/magic_login.rb, line 113
def clear_magic_login_token!
  config = sorcery_config
  sorcery_adapter.update_attributes(
    config.magic_login_token_attribute_name => nil,
    config.magic_login_token_expires_at_attribute_name => nil
  )
end
deliver_magic_login_instructions!() click to toggle source

generates a magic login code with expiration and sends an email to the user.

# File lib/sorcery/model/submodules/magic_login.rb, line 94
def deliver_magic_login_instructions!
  mail = false
  config = sorcery_config
  # hammering protection
  return false if !config.magic_login_time_between_emails.nil? &&
                  send(config.magic_login_email_sent_at_attribute_name) &&
                  send(config.magic_login_email_sent_at_attribute_name) > config.magic_login_time_between_emails.seconds.ago

  self.class.sorcery_adapter.transaction do
    generate_magic_login_token!
    unless config.magic_login_mailer_disabled
      send_magic_login_email!
      mail = true
    end
  end
  mail
end
generate_magic_login_token!() click to toggle source

generates a reset code with expiration

# File lib/sorcery/model/submodules/magic_login.rb, line 82
def generate_magic_login_token!
  config = sorcery_config
  attributes = {
    config.magic_login_token_attribute_name => TemporaryToken.generate_random_token,
    config.magic_login_email_sent_at_attribute_name => Time.now.in_time_zone
  }
  attributes[config.magic_login_token_expires_at_attribute_name] = Time.now.in_time_zone + config.magic_login_expiration_period if config.magic_login_expiration_period

  sorcery_adapter.update_attributes(attributes)
end

Protected Instance Methods

send_magic_login_email!() click to toggle source
# File lib/sorcery/model/submodules/magic_login.rb, line 123
def send_magic_login_email!
  generic_send_email(:magic_login_email_method_name, :magic_login_mailer_class)
end