Skip to content

Commit 34240ff

Browse files
slainer68binarylogic
authored andcommitted
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.
1 parent 233bbc3 commit 34240ff

File tree

5 files changed

+23
-6
lines changed

5 files changed

+23
-6
lines changed

lib/authlogic/session/cookies.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ module Config
2626
# * <tt>Default:</tt> "#{klass_name.underscore}_credentials"
2727
# * <tt>Accepts:</tt> String
2828
def cookie_key(value = nil)
29-
rw_config(:cookie_key, value, "#{klass_name.underscore}_credentials")
29+
rw_config(:cookie_key, value, "#{guessed_klass_name.underscore}_credentials")
3030
end
3131
alias_method :cookie_key=, :cookie_key
3232

lib/authlogic/session/klass.rb

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,13 @@ def klass
3838

3939
# Same as klass, just returns a string instead of the actual constant.
4040
def klass_name
41-
@klass_name ||=
42-
if guessed_name = name.scan(/(.*)Session/)[0]
43-
@klass_name = guessed_name[0]
44-
end
41+
@klass_name ||= guessed_klass_name
42+
end
43+
44+
# The string of the model name class guessed from the actual session class name.
45+
def guessed_klass_name
46+
guessed_name = name.scan(/(.*)Session/)[0]
47+
guessed_name[0] if guessed_name
4548
end
4649
end
4750

test/libs/user_session.rb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,6 @@
11
class UserSession < Authlogic::Session::Base
2-
end
2+
end
3+
4+
class BackOfficeUserSession < Authlogic::Session::Base
5+
authenticate_with User
6+
end

test/session_test/cookies_test.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,11 @@ def test_cookie_key
1111
assert_equal "user_credentials", UserSession.cookie_key
1212
end
1313

14+
def test_default_cookie_key
15+
assert_equal "user_credentials", UserSession.cookie_key
16+
assert_equal "back_office_user_credentials", BackOfficeUserSession.cookie_key
17+
end
18+
1419
def test_remember_me
1520
UserSession.remember_me = true
1621
assert_equal true, UserSession.remember_me

test/session_test/klass_test.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,11 @@ def test_klass
2020
def test_klass_name
2121
assert_equal "User", UserSession.klass_name
2222
end
23+
24+
def test_guessed_klass_name
25+
assert_equal "User", UserSession.guessed_klass_name
26+
assert_equal "BackOfficeUser", BackOfficeUserSession.guessed_klass_name
27+
end
2328
end
2429

2530
class InstanceMethodsTest < ActiveSupport::TestCase

0 commit comments

Comments
 (0)