class Rack::OpenID::SimpleAuth
A simple OpenID middleware that restricts access to a single identifier.
use Rack::OpenID::SimpleAuth, "http://example.org"
SimpleAuth will automatically insert the required Rack::OpenID middleware, so use Rack::OpenID is unnecessary.
Attributes
app[R]
identifier[R]
Public Class Methods
new(*args)
click to toggle source
Calls superclass method
# File lib/rack/openid/simple_auth.rb, line 14 def self.new(*args) Rack::OpenID.new(super) end
new(app, identifier)
click to toggle source
# File lib/rack/openid/simple_auth.rb, line 20 def initialize(app, identifier) @app = app @identifier = identifier end
Public Instance Methods
call(env)
click to toggle source
# File lib/rack/openid/simple_auth.rb, line 25 def call(env) if session_authenticated?(env) app.call(env) elsif successful_response?(env) authenticate_session(env) redirect_to requested_url(env) else authentication_request end end
Private Instance Methods
authenticate_session(env)
click to toggle source
# File lib/rack/openid/simple_auth.rb, line 50 def authenticate_session(env) session(env)['authenticated'] = true end
authentication_request()
click to toggle source
# File lib/rack/openid/simple_auth.rb, line 69 def authentication_request [401, { OpenID::AUTHENTICATE_HEADER => www_authenticate_header }, []] end
raise_session_error()
click to toggle source
# File lib/rack/openid/simple_auth.rb, line 42 def raise_session_error raise RuntimeError, 'Rack::OpenID::SimpleAuth requires a session' end
redirect_to(url)
click to toggle source
# File lib/rack/openid/simple_auth.rb, line 65 def redirect_to(url) [303, {'Content-Type' => 'text/html', 'Location' => url}, []] end
requested_url(env)
click to toggle source
# File lib/rack/openid/simple_auth.rb, line 60 def requested_url(env) req = Rack::Request.new(env) req.url end
session(env)
click to toggle source
# File lib/rack/openid/simple_auth.rb, line 38 def session(env) env['rack.session'] || raise_session_error end
session_authenticated?(env)
click to toggle source
# File lib/rack/openid/simple_auth.rb, line 46 def session_authenticated?(env) session(env)['authenticated'] == true end
successful_response?(env)
click to toggle source
# File lib/rack/openid/simple_auth.rb, line 54 def successful_response?(env) if resp = env[OpenID::RESPONSE] resp.status == :success && resp.display_identifier == identifier end end
www_authenticate_header()
click to toggle source
# File lib/rack/openid/simple_auth.rb, line 73 def www_authenticate_header OpenID.build_header(:identifier => identifier) end