Class: Rack::OAuth2Utils::Middleware

Inherits:
Object
  • Object
show all
Defined in:
lib/rack-oauth2_utils/middleware.rb

Instance Method Summary collapse

Constructor Details

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

Returns a new instance of Middleware.



6
7
8
9
10
11
# File 'lib/rack-oauth2_utils/middleware.rb', line 6

def initialize(app, options = {}, &resolver)
  @app = app
  @realm = options[:realm]
  @logger = options[:logger]
  @resolver = resolver
end

Instance Method Details

#call(env) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/rack-oauth2_utils/middleware.rb', line 13

def call(env)
  request = OAuthRequest.new(env)
  logger = @logger || env["rack.logger"]
  
  # If not oauth header / param, leave it up to the app.
  return @app.call(env) unless request.oauth?
  
  # Fetch identity
  if identity = @resolver.call(request.access_token) # identity found, forward to backend
    env["oauth.identity"] = identity
    logger.info "RO2U: Authorized #{identity}" if logger
  else # invalid token
    logger.info "RO2U: Invalid token" if logger
    return unauthorized(request)
  end
  @app.call(env)
end