class ApiValve::Middleware::PermissionCheck

Public Class Methods

new(app, options = {}) click to toggle source
# File lib/api_valve/middleware/permission_check.rb, line 3
def initialize(app, options = {})
  @app = app
  @options = options
end

Public Instance Methods

call(env) click to toggle source
# File lib/api_valve/middleware/permission_check.rb, line 8
def call(env)
  env['permission_handler'] = @handler
  if handler(env).allowed?
    @app.call(env)
  else
    message = handler(env).message
    ApiValve.logger.debug { message }
    render_error ApiValve::Error::Forbidden.new message
  end
end

Private Instance Methods

handler(env) click to toggle source
# File lib/api_valve/middleware/permission_check.rb, line 21
def handler(env)
  env['permission_handler'] ||= handler_klass.new(
    env,
    @options.merge(env['api_valve.router.route'].options[:permission_handler] || {})
  )
end
handler_klass() click to toggle source
# File lib/api_valve/middleware/permission_check.rb, line 28
def handler_klass
  @options[:klass] || ApiValve::PermissionHandler
end
render_error(error) click to toggle source
# File lib/api_valve/middleware/permission_check.rb, line 32
def render_error(error)
  self.class.const_get(ApiValve.error_responder).new(error).call
end