mirror of
https://github.com/heartcombo/devise.git
synced 2026-01-10 23:38:10 -05:00
Use ActiveModel's to_key instead of id.
Signed-off-by: José Valim <jose.valim@gmail.com>
This commit is contained in:
@@ -100,12 +100,12 @@ module Devise
|
||||
module ClassMethods
|
||||
# Create the cookie key using the record id and remember_token
|
||||
def serialize_into_cookie(record)
|
||||
[record.id, record.rememberable_value]
|
||||
[record.to_key, record.rememberable_value]
|
||||
end
|
||||
|
||||
# Recreate the user based on the stored cookie
|
||||
def serialize_from_cookie(id, remember_token)
|
||||
record = find(:first, :conditions => { :id => id })
|
||||
record = find(:first, :conditions => { :id => id.first })
|
||||
record if record && record.rememberable_value == remember_token && !record.remember_expired?
|
||||
end
|
||||
|
||||
|
||||
@@ -15,20 +15,20 @@ end
|
||||
|
||||
class Warden::SessionSerializer
|
||||
def serialize(record)
|
||||
[record.class.name, record.id, record.authenticatable_salt]
|
||||
[record.class.name, record.to_key, record.authenticatable_salt]
|
||||
end
|
||||
|
||||
def deserialize(keys)
|
||||
if keys.size == 2
|
||||
raise "Devise changed how it stores objects in session. If you are seeing this message, " <<
|
||||
"you can fix it by changing one character in your cookie secret, forcing all previous " <<
|
||||
"cookies to expire, or cleaning up your database sessions if you are using a db store."
|
||||
"you can fix it by changing one character in your cookie secret or cleaning up your " <<
|
||||
"database sessions if you are using a db store."
|
||||
end
|
||||
|
||||
klass, id, salt = keys
|
||||
|
||||
begin
|
||||
record = klass.constantize.find(:first, :conditions => { :id => id })
|
||||
record = klass.constantize.find(:first, :conditions => { :id => id.first })
|
||||
record if record && record.authenticatable_salt == salt
|
||||
rescue NameError => e
|
||||
if e.message =~ /uninitialized constant/
|
||||
@@ -39,4 +39,4 @@ class Warden::SessionSerializer
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -21,12 +21,12 @@ module SharedRememberableTest
|
||||
end
|
||||
|
||||
test 'serialize should return nil if no resource is found' do
|
||||
assert_nil resource_class.serialize_from_cookie(0, "123")
|
||||
assert_nil resource_class.serialize_from_cookie([0], "123")
|
||||
end
|
||||
|
||||
test 'remember me return nil if is a valid resource with invalid token' do
|
||||
resource = create_resource
|
||||
assert_nil resource_class.serialize_from_cookie(resource.id, "123")
|
||||
assert_nil resource_class.serialize_from_cookie([resource.id], "123")
|
||||
end
|
||||
|
||||
test 'remember for should fallback to devise remember for default configuration' do
|
||||
@@ -153,13 +153,13 @@ class RememberableTest < ActiveSupport::TestCase
|
||||
test 'serialize into cookie' do
|
||||
admin = create_admin
|
||||
admin.remember_me!
|
||||
assert_equal [admin.id, admin.remember_token], Admin.serialize_into_cookie(admin)
|
||||
assert_equal [admin.to_key, admin.remember_token], Admin.serialize_into_cookie(admin)
|
||||
end
|
||||
|
||||
test 'serialize from cookie' do
|
||||
admin = create_admin
|
||||
admin.remember_me!
|
||||
assert_equal admin, Admin.serialize_from_cookie(admin.id, admin.remember_token)
|
||||
assert_equal admin, Admin.serialize_from_cookie(admin.to_key, admin.remember_token)
|
||||
end
|
||||
|
||||
test 'if remember_across_browsers is true, remember_me! should create a new token if no token exists' do
|
||||
@@ -260,12 +260,12 @@ class WithSaltRememberableTest < ActiveSupport::TestCase
|
||||
test 'serialize into cookie' do
|
||||
user = create_user
|
||||
user.remember_me!
|
||||
assert_equal [user.id, user.authenticatable_salt], User.serialize_into_cookie(user)
|
||||
assert_equal [user.to_key, user.authenticatable_salt], User.serialize_into_cookie(user)
|
||||
end
|
||||
|
||||
test 'serialize from cookie' do
|
||||
user = create_user
|
||||
user.remember_me!
|
||||
assert_equal user, User.serialize_from_cookie(user.id, user.authenticatable_salt)
|
||||
assert_equal user, User.serialize_from_cookie(user.to_key, user.authenticatable_salt)
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user