Skip to content

Commit

Permalink
add key option to rememberable_options
Browse files Browse the repository at this point in the history
closes #2218
  • Loading branch information
nashby committed Jan 20, 2013
1 parent 0642e2f commit d3f8bd6
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 6 deletions.
2 changes: 1 addition & 1 deletion lib/devise.rb
Expand Up @@ -43,7 +43,7 @@ module Strategies
# True values used to check params
TRUE_VALUES = [true, 1, '1', 't', 'T', 'true', 'TRUE']

# Custom domain for cookies. Not set by default
# Custom domain or key for cookies. Not set by default
mattr_accessor :rememberable_options
@@rememberable_options = {}

Expand Down
10 changes: 7 additions & 3 deletions lib/devise/controllers/rememberable.rb
Expand Up @@ -23,14 +23,14 @@ def initialize(warden)
def remember_me(resource)
scope = Devise::Mapping.find_scope!(resource)
resource.remember_me!(resource.extend_remember_period)
cookies.signed["remember_#{scope}_token"] = remember_cookie_values(resource)
cookies.signed[remember_key(resource, scope)] = remember_cookie_values(resource)
end

# Forgets the given resource by deleting a cookie
def forget_me(resource)
scope = Devise::Mapping.find_scope!(resource)
resource.forget_me!
cookies.delete("remember_#{scope}_token", forget_cookie_values(resource))
cookies.delete(remember_key(resource, scope), forget_cookie_values(resource))
end

protected
Expand All @@ -47,6 +47,10 @@ def remember_cookie_values(resource)
:expires => resource.remember_expires_at
)
end

def remember_key(resource, scope)
resource.rememberable_options.fetch(:key, "remember_#{scope}_token")
end
end
end
end
end
4 changes: 2 additions & 2 deletions lib/devise/strategies/rememberable.rb
Expand Up @@ -41,7 +41,7 @@ def remember_me?
end

def remember_key
"remember_#{scope}_token"
mapping.to.rememberable_options.fetch(:key, "remember_#{scope}_token")
end

def remember_cookie
Expand All @@ -52,4 +52,4 @@ def remember_cookie
end
end

Warden::Strategies.add(:rememberable, Devise::Strategies::Rememberable)
Warden::Strategies.add(:rememberable, Devise::Strategies::Rememberable)
7 changes: 7 additions & 0 deletions test/integration/rememberable_test.rb
Expand Up @@ -57,6 +57,13 @@ def cookie_expires(key)
end
end

test 'generate remember token with a custom key' do
swap Devise, :rememberable_options => { :key => "v1lat_token" } do
user = sign_in_as_user :remember_me => true
assert request.cookies["v1lat_token"]
end
end

test 'generate remember token after sign in setting session options' do
begin
Rails.configuration.session_options[:domain] = "omg.somewhere.com"
Expand Down

0 comments on commit d3f8bd6

Please sign in to comment.