Module: Authlogic::Session::Config::ClassMethods

Defined in:
lib/authlogic/session/config.rb

Overview

Config

Configuration is simple. The configuration options are just class methods. Just put this in your config/initializers directory

UserSession.configure do |config|
  config.authenticate_with = User
  # ... more configuration
end

or you can set your configuration in the session class directly:

class UserSession < Authlogic::Session::Base
  authenticate_with User
  # ... more configuration
end

You can also access the values in the same fashion:

UserSession.authenticate_with

See the methods belows for all configuration options.

Instance Method Summary collapse

Instance Method Details

#authenticate_with(klass) ⇒ Object Also known as: authenticate_with=

Lets you change which model to use for authentication.

  • Default: inferred from the class name. UserSession would automatically try User

  • Accepts: an ActiveRecord class



35
36
37
38
# File 'lib/authlogic/session/config.rb', line 35

def authenticate_with(klass)
  @klass_name = klass.name
  @klass = klass
end

#configure {|_self| ... } ⇒ Object

Convenience method that lets you easily set configuration, see examples above

Yields:

  • (_self)

Yield Parameters:



42
43
44
# File 'lib/authlogic/session/config.rb', line 42

def configure
  yield self
end

The name of the cookie or the key in the cookies hash. Be sure and use a unique name. If you have multiple sessions and they use the same cookie it will cause problems. Also, if a id is set it will be inserted into the beginning of the string. Exmaple:

session = UserSession.new(:super_high_secret)
session.cookie_key => "super_high_secret_user_credentials"
  • Default: “#Authlogic::Session::Config::ClassMethods.klass_nameklass_name.underscore_credentials”

  • Accepts: String



54
55
56
57
58
59
60
# File 'lib/authlogic/session/config.rb', line 54

def cookie_key(value = nil)
  if value.nil?
    read_inheritable_attribute(:cookie_key) || cookie_key("#{klass_name.underscore}_credentials")
  else
    write_inheritable_attribute(:cookie_key, value)
  end
end

#find_by_login_method(value = nil) ⇒ Object Also known as: find_by_login_method=

The name of the method used to find the record by the login. What’s nifty about this is that you can do anything in your method, Authlogic will just pass you the login.

Let’s say you allow users to login by username or email. Set this to “find_login”, or whatever method you want. Then in your model create a class method like:

def self.()
  () || find_by_email()
end
  • Default: “find_by_##login_field

  • Accepts: Symbol or String



73
74
75
76
77
78
79
# File 'lib/authlogic/session/config.rb', line 73

def (value = nil)
  if value.nil?
    read_inheritable_attribute(:find_by_login_method) || ("find_by_#{}")
  else
    write_inheritable_attribute(:find_by_login_method, value)
  end
end

#find_with(*values) ⇒ Object Also known as: find_with=

Calling UserSession.find tries to find the user session by session, then cookie, then basic http auth. This option allows you to change the order or remove any of these.

  • Default: [:session, :cookie, :http_auth]

  • Accepts: Array, and can only use any of the 3 options above



86
87
88
89
90
91
92
93
# File 'lib/authlogic/session/config.rb', line 86

def find_with(*values)
  if values.blank?
    read_inheritable_attribute(:find_with) || find_with(:session, :cookie, :http_auth)
  else
    values.flatten!
    write_inheritable_attribute(:find_with, values)
  end
end

#login_field(value = nil) ⇒ Object Also known as: login_field=

The name of the method you want Authlogic to create for storing the login / username. Keep in mind this is just for your Authlogic::Session, if you want it can be something completely different than the field in your model. So if you wanted people to login with a field called “login” and then find users by email this is compeltely doable. See the find_by_login_method configuration option for more details.

  • Default: Guesses based on the model columns, tries login, username, and email. If none are present it defaults to login

  • Accepts: Symbol or String



102
103
104
105
106
107
108
# File 'lib/authlogic/session/config.rb', line 102

def (value = nil)
  if value.nil?
    read_inheritable_attribute(:login_field) || ((klass.column_names.include?("login") && :login) || (klass.column_names.include?("username") && :username) || (klass.column_names.include?("email") && :email) || :login)
  else
    write_inheritable_attribute(:login_field, value)
  end
end

#password_field(value = nil) ⇒ Object Also known as: password_field=

Works exactly like login_field, but for the password instead.

  • Default: Guesses based on the model columns, tries password and pass. If none are present it defaults to password

  • Accepts: Symbol or String



115
116
117
118
119
120
121
# File 'lib/authlogic/session/config.rb', line 115

def password_field(value = nil)
  if value.nil?
    read_inheritable_attribute(:password_field) || password_field((klass.column_names.include?("password") && :password) || (klass.column_names.include?("pass") && :pass) || :password)
  else
    write_inheritable_attribute(:password_field, value)
  end
end

#remember_me(value = nil) ⇒ Object Also known as: remember_me=

If sessions should be remembered by default or not.

  • Default: false

  • Accepts: Boolean



128
129
130
131
132
133
134
# File 'lib/authlogic/session/config.rb', line 128

def remember_me(value = nil)
  if value.nil?
    read_inheritable_attribute(:remember_me)
  else
    write_inheritable_attribute(:remember_me, value)
  end
end

#remember_me_for(value = :_read) ⇒ Object Also known as: remember_me_for=

The length of time until the cookie expires.

  • Default: 3.months

  • Accepts: Integer, length of time in seconds, such as 60 or 3.months



141
142
143
144
145
146
147
# File 'lib/authlogic/session/config.rb', line 141

def remember_me_for(value = :_read)
  if value == :_read
    read_inheritable_attribute(:remember_me_for) || remember_me_for(3.months)
  else
    write_inheritable_attribute(:remember_me_for, value)
  end
end

#remember_token_field(value = nil) ⇒ Object Also known as: remember_token_field=

The name of the field that the remember token is stored. This is for cookies. Let’s say you set up your app and want all users to be remembered for 6 months. Then you realize that might be a little too long. Well they already have a cookie set to expire in 6 months. Without a token you would have to reset their password, which obviously isn’t feasible. So instead of messing with their password just reset their remember token. Next time they access the site and try to login via a cookie it will be rejected and they will have to relogin.

  • Default: Guesses based on the model columns, tries remember_token, remember_key, cookie_token, and cookie_key. If none are present it defaults to remember_token

  • Accepts: Symbol or String



156
157
158
159
160
161
162
163
164
165
166
167
168
169
# File 'lib/authlogic/session/config.rb', line 156

def remember_token_field(value = nil)
  if value.nil?
    read_inheritable_attribute(:remember_token_field) ||
    remember_token_field(
      (klass.column_names.include?("remember_token") && :remember_token) ||
      (klass.column_names.include?("remember_key") && :remember_key) ||
      (klass.column_names.include?("cookie_token") && :cookie_token) ||
      (klass.column_names.include?("cookie_key") && :cookie_key) ||
      :remember_token
    )
  else
    write_inheritable_attribute(:remember_token_field, value)
  end
end

#session_key(value = nil) ⇒ Object Also known as: session_key=

Works exactly like cookie_key, but for sessions. See cookie_key for more info.

  • Default: cookie_key

  • Accepts: Symbol or String



176
177
178
179
180
181
182
# File 'lib/authlogic/session/config.rb', line 176

def session_key(value = nil)
  if value.nil?
    read_inheritable_attribute(:session_key) || session_key(cookie_key)
  else
    write_inheritable_attribute(:session_key, value)
  end
end

#verify_password_method(value = nil) ⇒ Object Also known as: verify_password_method=

The name of the method in your model used to verify the password. This should be an instance method. It should also be prepared to accept a raw password and a crytped password.



189
190
191
192
193
194
195
# File 'lib/authlogic/session/config.rb', line 189

def verify_password_method(value = nil)
  if value.nil?
    read_inheritable_attribute(:verify_password_method) || verify_password_method("valid_#{password_field}?")
  else
    write_inheritable_attribute(:verify_password_method, value)
  end
end