From 34240ffbc0cd4dfda0512a239a9c03563f65fda2 Mon Sep 17 00:00:00 2001 From: slainer68 Date: Wed, 28 Oct 2009 21:58:01 +0800 Subject: [PATCH] By default, the cookie key should be guessed from the session klass name instead of the klass name. So that we don't have to change cookie keys if we have multiple session models authenticating with the same model. --- lib/authlogic/session/cookies.rb | 2 +- lib/authlogic/session/klass.rb | 11 +++++++---- test/libs/user_session.rb | 6 +++++- test/session_test/cookies_test.rb | 5 +++++ test/session_test/klass_test.rb | 5 +++++ 5 files changed, 23 insertions(+), 6 deletions(-) diff --git a/lib/authlogic/session/cookies.rb b/lib/authlogic/session/cookies.rb index 7651ae4a..05cb013c 100644 --- a/lib/authlogic/session/cookies.rb +++ b/lib/authlogic/session/cookies.rb @@ -26,7 +26,7 @@ module Config # * Default: "#{klass_name.underscore}_credentials" # * Accepts: String def cookie_key(value = nil) - rw_config(:cookie_key, value, "#{klass_name.underscore}_credentials") + rw_config(:cookie_key, value, "#{guessed_klass_name.underscore}_credentials") end alias_method :cookie_key=, :cookie_key diff --git a/lib/authlogic/session/klass.rb b/lib/authlogic/session/klass.rb index 50248b57..a94ab8fb 100644 --- a/lib/authlogic/session/klass.rb +++ b/lib/authlogic/session/klass.rb @@ -38,10 +38,13 @@ def klass # Same as klass, just returns a string instead of the actual constant. def klass_name - @klass_name ||= - if guessed_name = name.scan(/(.*)Session/)[0] - @klass_name = guessed_name[0] - end + @klass_name ||= guessed_klass_name + end + + # The string of the model name class guessed from the actual session class name. + def guessed_klass_name + guessed_name = name.scan(/(.*)Session/)[0] + guessed_name[0] if guessed_name end end diff --git a/test/libs/user_session.rb b/test/libs/user_session.rb index 8c19d195..b227d860 100644 --- a/test/libs/user_session.rb +++ b/test/libs/user_session.rb @@ -1,2 +1,6 @@ class UserSession < Authlogic::Session::Base -end \ No newline at end of file +end + +class BackOfficeUserSession < Authlogic::Session::Base + authenticate_with User +end diff --git a/test/session_test/cookies_test.rb b/test/session_test/cookies_test.rb index eb882a6d..2baf138f 100644 --- a/test/session_test/cookies_test.rb +++ b/test/session_test/cookies_test.rb @@ -11,6 +11,11 @@ def test_cookie_key assert_equal "user_credentials", UserSession.cookie_key end + def test_default_cookie_key + assert_equal "user_credentials", UserSession.cookie_key + assert_equal "back_office_user_credentials", BackOfficeUserSession.cookie_key + end + def test_remember_me UserSession.remember_me = true assert_equal true, UserSession.remember_me diff --git a/test/session_test/klass_test.rb b/test/session_test/klass_test.rb index eaacac15..4f17d7d2 100644 --- a/test/session_test/klass_test.rb +++ b/test/session_test/klass_test.rb @@ -20,6 +20,11 @@ def test_klass def test_klass_name assert_equal "User", UserSession.klass_name end + + def test_guessed_klass_name + assert_equal "User", UserSession.guessed_klass_name + assert_equal "BackOfficeUser", BackOfficeUserSession.guessed_klass_name + end end class InstanceMethodsTest < ActiveSupport::TestCase