module Sorcery::Model::ClassMethods

Attributes

sorcery_config[RW]

Protected Class Methods

inherited(subclass) click to toggle source
Calls superclass method
# File lib/sorcery/model.rb, line 150
def self.inherited(subclass)
  subclass.class_eval do
    class << self
      attr_accessor :sorcery_config
    end
  end
  subclass.sorcery_config = sorcery_config
  super
end

Public Instance Methods

authenticate(*credentials, &block) click to toggle source

The default authentication method. Takes a username and password, Finds the user by the username and compares the user's password to the one supplied to the method. returns the user if success, nil otherwise.

# File lib/sorcery/model.rb, line 86
def authenticate(*credentials, &block)
  raise ArgumentError, 'at least 2 arguments required' if credentials.size < 2

  if credentials[0].blank?
    return authentication_response(return_value: false, failure: :invalid_login, &block)
  end

  if @sorcery_config.downcase_username_before_authenticating
    credentials[0].downcase!
  end

  user = sorcery_adapter.find_by_credentials(credentials)

  unless user
    return authentication_response(failure: :invalid_login, &block)
  end

  set_encryption_attributes

  if user.respond_to?(:active_for_authentication?) && !user.active_for_authentication?
    return authentication_response(user: user, failure: :inactive, &block)
  end

  @sorcery_config.before_authenticate.each do |callback|
    success, reason = user.send(callback)

    unless success
      return authentication_response(user: user, failure: reason, &block)
    end
  end

  unless user.valid_password?(credentials[1])
    return authentication_response(user: user, failure: :invalid_password, &block)
  end

  authentication_response(user: user, return_value: user, &block)
end
encrypt(*tokens) click to toggle source

encrypt tokens using current encryption_provider.

# File lib/sorcery/model.rb, line 125
def encrypt(*tokens)
  return tokens.first if @sorcery_config.encryption_provider.nil?

  set_encryption_attributes

  CryptoProviders::AES256.key = @sorcery_config.encryption_key
  @sorcery_config.encryption_provider.encrypt(*tokens)
end
sorcery_config() click to toggle source

Returns the class instance variable for configuration, when called by the class itself.

# File lib/sorcery/model.rb, line 78
def sorcery_config
  @sorcery_config
end

Protected Instance Methods

add_config_inheritance() click to toggle source
# File lib/sorcery/model.rb, line 148
def add_config_inheritance
  class_eval do
    def self.inherited(subclass)
      subclass.class_eval do
        class << self
          attr_accessor :sorcery_config
        end
      end
      subclass.sorcery_config = sorcery_config
      super
    end
  end
end
authentication_response(options = {}) { |options, options| ... } click to toggle source
# File lib/sorcery/model.rb, line 136
def authentication_response(options = {})
  yield(options[:user], options[:failure]) if block_given?

  options[:return_value]
end
set_encryption_attributes() click to toggle source
# File lib/sorcery/model.rb, line 142
def set_encryption_attributes
  @sorcery_config.encryption_provider.stretches = @sorcery_config.stretches if @sorcery_config.encryption_provider.respond_to?(:stretches) && @sorcery_config.stretches
  @sorcery_config.encryption_provider.join_token = @sorcery_config.salt_join_token if @sorcery_config.encryption_provider.respond_to?(:join_token) && @sorcery_config.salt_join_token
  @sorcery_config.encryption_provider.pepper = @sorcery_config.pepper if @sorcery_config.encryption_provider.respond_to?(:pepper) && @sorcery_config.pepper
end