Sha256: a525624aee67504206442e895d29c01cac0feb1641097b74792c3007124e3a81

Contents?: true

Size: 1011 Bytes

Versions: 23

Compression:

Stored size: 1011 Bytes

Contents

module Challah

  # Allows authentication by username and password.
  class PasswordTechnique

    attr_accessor :user_model

    # grab the params we want from this request
    def initialize(session)
      @username   = session.username? ? session.username : nil
      @password   = session.password? ? session.password : nil
    end

    # if we can successfully authenticate, return a User instance, otherwise nil
    def authenticate
      if username? and password?
        user = user_model.find_for_session(username)

        if user
          if user.active?
            if user.authenticate(@password)
              return user
            end
          end

          user.failed_authentication!
          user = nil
        end
      end

      nil
    end

    def password?
      !!@password
    end

    def persist?
      true
    end

    def user_model
      @user_model ||= Challah.user
    end

    def username?
      !!@username
    end

    def username
      @username
    end
  end

end

Version data entries

23 entries across 23 versions & 1 rubygems

Version Path
challah-1.4.2 lib/challah/techniques/password_technique.rb
challah-1.4.1 lib/challah/techniques/password_technique.rb
challah-1.4.0 lib/challah/techniques/password_technique.rb
challah-1.3.3 lib/challah/techniques/password_technique.rb
challah-1.3.2 lib/challah/techniques/password_technique.rb
challah-1.3.1 lib/challah/techniques/password_technique.rb
challah-1.3.0 lib/challah/techniques/password_technique.rb
challah-1.2.11 lib/challah/techniques/password_technique.rb
challah-1.2.10 lib/challah/techniques/password_technique.rb
challah-1.2.9 lib/challah/techniques/password_technique.rb
challah-1.2.8 lib/challah/techniques/password_technique.rb
challah-1.2.7 lib/challah/techniques/password_technique.rb
challah-1.2.6 lib/challah/techniques/password_technique.rb
challah-1.2.5 lib/challah/techniques/password_technique.rb
challah-1.2.5.pre lib/challah/techniques/password_technique.rb
challah-1.2.4 lib/challah/techniques/password_technique.rb
challah-1.2.3 lib/challah/techniques/password_technique.rb
challah-1.2.2 lib/challah/techniques/password_technique.rb
challah-1.2.1 lib/challah/techniques/password_technique.rb
challah-1.2.0 lib/challah/techniques/password_technique.rb