Class: Sand::Middleware

Inherits:
Object
  • Object
show all
Defined in:
lib/sand/middleware.rb

Constant Summary collapse

DEFAULT_OPTIONS =
{
  pass: []
}.freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

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

Returns a new instance of Middleware.



18
19
20
21
# File 'lib/sand/middleware.rb', line 18

def initialize(app, options = {})
  @app = app
  @options = DEFAULT_OPTIONS.merge(options)
end

Instance Attribute Details

#appObject (readonly)

Returns the value of attribute app.



12
13
14
# File 'lib/sand/middleware.rb', line 12

def app
  @app
end

#optionsObject (readonly)

Returns the value of attribute options.



12
13
14
# File 'lib/sand/middleware.rb', line 12

def options
  @options
end

#responseObject (readonly)

Returns the value of attribute response.



12
13
14
# File 'lib/sand/middleware.rb', line 12

def response
  @response
end

Instance Method Details

#call(env) ⇒ Object



29
30
31
32
33
34
35
36
# File 'lib/sand/middleware.rb', line 29

def call(env)
  env['sand'] = RequestMethods.new(env)

  result = app.call(env)

  return result if passed?(env)
  raise Sand::AuthorizationNotPerformed
end

#passed?(env) ⇒ Boolean

Returns:

  • (Boolean)


23
24
25
26
27
# File 'lib/sand/middleware.rb', line 23

def passed?(env)
  return true if options[:pass].any? { |r| r =~ env['PATH_INFO'] }
  return true if env['sand.pass'] == true || env['sand.scoped'] || env['sand.authorized'] == true # rubocop:disable Metrics/LineLength
  false
end