Class: SoarAuthenticationToken::RackMiddleware

Inherits:
Object
  • Object
show all
Defined in:
lib/soar_authentication_token/rack_middleware.rb

Instance Method Summary collapse

Constructor Details

#initialize(app, config) ⇒ RackMiddleware

Returns a new instance of RackMiddleware.



12
13
14
15
# File 'lib/soar_authentication_token/rack_middleware.rb', line 12

def initialize(app, config)
  @app = app
  @config = config
end

Instance Method Details

#call(env) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/soar_authentication_token/rack_middleware.rb', line 17

def call(env)
  request = Rack::Request.new env
  if @config[:browsers_only] and !is_browser?(request)
    @app.call env
  else
    session, params = request.session, request.params
    if session['user']
      @app.call env
    elsif params['logoutRequest']
      callback(:on_logout, env, st_from_logoutrequest(params['logoutRequest']))
      [200, {}, ['']]
    elsif user = signon(request)
      session['user'] = user
      callback(:on_login, env, request['ticket'])
      @app.call env
    else
      service = get_service request
      [302, {'Location' => signon_url(service)}, ['']]
    end
  end
end