Module: Kingsman::Controllers::Rememberable

Included in:
Hooks::Proxy
Defined in:
lib/kingsman/controllers/rememberable.rb

Overview

A module that may be optionally included in a controller in order to provide remember me behavior. Useful when signing in is done through a callback, like in OmniAuth.

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

Return default cookie values retrieved from session options.



10
11
12
# File 'lib/kingsman/controllers/rememberable.rb', line 10

def self.cookie_values
  Jets.config.session_options.slice(:path, :domain, :secure)
end

Instance Method Details

#forget_me(resource) ⇒ Object

Forgets the given resource by deleting a cookie



30
31
32
33
34
35
# File 'lib/kingsman/controllers/rememberable.rb', line 30

def forget_me(resource)
  scope = Kingsman::Mapping.find_scope!(resource)
  resource.forget_me!
  cookies.delete(remember_key(resource, scope))
  # cookies.delete(remember_key(resource, scope), forget_cookie_values(resource))
end

#remember_me(resource) ⇒ Object

Remembers the given resource by setting up a cookie



22
23
24
25
26
27
# File 'lib/kingsman/controllers/rememberable.rb', line 22

def remember_me(resource)
  return if request.env["kingsman.skip_storage"]
  scope = Kingsman::Mapping.find_scope!(resource)
  resource.remember_me!
  cookies.signed[remember_key(resource, scope)] = remember_cookie_values(resource)
end

#remember_me_is_active?(resource) ⇒ Boolean

Returns:

  • (Boolean)


14
15
16
17
18
19
# File 'lib/kingsman/controllers/rememberable.rb', line 14

def remember_me_is_active?(resource)
  return false unless resource.respond_to?(:remember_me)
  scope = Kingsman::Mapping.find_scope!(resource)
  _, token, generated_at = cookies.signed[remember_key(resource, scope)]
  resource.remember_me?(token, generated_at)
end