Skip to content

Instantly share code, notes, and snippets.

@dblock
Created January 16, 2013 17:51
Show Gist options
  • Save dblock/4549185 to your computer and use it in GitHub Desktop.
Save dblock/4549185 to your computer and use it in GitHub Desktop.
require 'devise/strategies/rememberable'
module Devise
module Strategies
class Rememberable < Authenticatable
private
def remember_key
key = "_app_remember_#{scope}_token"
key += "_#{Rails.env.to_s}" unless Rails.env.production?
key
end
def remember_cookie
@remember_cookie ||= cookies.signed[remember_key] # backwards compatibility
@remember_cookie ||= cookies.signed["remember_#{scope}_token"]
end
end
end
end
module Devise
module Controllers
module Rememberable
# Remembers the given resource by setting up a cookie
def remember_me(resource)
scope = Devise::Mapping.find_scope!(resource)
resource.remember_me!(resource.extend_remember_period)
cookies.signed[remember_key(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_key(scope), forget_cookie_values(resource))
cookies.delete("remember_#{scope}_token", forget_cookie_values(resource))
end
private
def remember_key(scope)
key = "_app_remember_#{scope}_token"
key += "_#{Rails.env.to_s}" unless Rails.env.production?
key
end
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment