Class: Rack::DeviseCookieAuth

Inherits:
Object
  • Object
show all
Defined in:
lib/rack/devise_cookie_auth.rb,
lib/rack/devise_cookie_auth/version.rb

Constant Summary collapse

DEFAULT_OPTIONS =
{
  resource: 'user',
  redirect_to: nil
}
VERSION =
'0.1.0'

Instance Method Summary collapse

Constructor Details

#initialize(app, options = {}) ⇒ DeviseCookieAuth

Returns a new instance of DeviseCookieAuth.

Raises:

  • (ArgumentError)


10
11
12
13
14
# File 'lib/rack/devise_cookie_auth.rb', line 10

def initialize(app, options = {})
  raise ArgumentError, 'Cookie secret must be set!' if options[:secret].nil?

  @app, @options = app, DEFAULT_OPTIONS.merge(options)
end

Instance Method Details

#call(env) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
# File 'lib/rack/devise_cookie_auth.rb', line 16

def call(env)
  @request = Rack::Request.new(env)

  verifier = ActiveSupport::MessageVerifier.new(@options[:secret])
  resource_ids, remember_key = verifier.verify(@request.cookies[cookie_name])
  env["current_#{resource}_id"] = resource_ids.first

  @app.call(env)
rescue ActiveSupport::MessageVerifier::InvalidSignature
  redirect!
end