Module: Ramaze::Helper::Identity
- Defined in:
- lib/ramaze/helper/identity.rb
Instance Method Summary collapse
-
#openid_begin ⇒ Object
We land here from the openid_login_form and if we can find a matching OpenID server we redirect the user to it, the browser will return to openid_complete when the authentication is complete.
-
#openid_complete ⇒ Object
After having authenticated at the OpenID server browsers are redirected back here and on success we set the session[:identity] and a little default flash message.
-
#openid_login_form(caption = "login") ⇒ Object
Simple form for use or overwriting.
Instance Method Details
#openid_begin ⇒ Object
We land here from the openid_login_form and if we can find a matching OpenID server we redirect the user to it, the browser will return to openid_complete when the authentication is complete.
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/ramaze/helper/identity.rb', line 39 def openid_begin url = request['url'] # The OpenID URL pointing to a user's OpenID page (ex: http://username.myopenid.com) redirect_referrer if url.to_s.empty? session[:openid][:entry] = request.referrer openid_request = openid_consumer.begin(url) # We want these communications to be a secure as the server can support! papereq = OpenID::PAPE::Request.new papereq.add_policy_uri(OpenID::PAPE::AUTH_PHISHING_RESISTANT) papereq.max_auth_age = 2*60*60 openid_request.add_extension(papereq) # Request information about the person sregreq = OpenID::SReg::Request.new sregreq.request_fields(['fullname', 'nickname', 'dob', 'email', 'gender', 'postcode', 'country', 'language', 'timezone']) openid_request.add_extension(sregreq) openid_request.return_to_args['did_pape'] = 'y' root = "http://#{request.http_host}/" return_to = request.domain(Rs(:openid_complete)).to_s immediate = false if openid_request.send_redirect?(root, return_to, immediate) redirect_url = openid_request.redirect_url(root, return_to, immediate) raw_redirect redirect_url else # what the hell is @form_text ? end rescue OpenID::OpenIDError => ex flash[:error] = "Discovery failed for #{url}: #{ex}" raw_redirect Rs(:/) end |
#openid_complete ⇒ Object
After having authenticated at the OpenID server browsers are redirected back here and on success we set the session[:identity] and a little default flash message. Then we redirect to wherever session[:entry] points us to, which was set on openid_begin to the referrer
TODO:
- maybe using StackHelper, but this is a really minimal overlap?
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
# File 'lib/ramaze/helper/identity.rb', line 80 def openid_complete openid_response = openid_consumer.complete(request.params, request.url) case openid_response.status when OpenID::Consumer::FAILURE flash[:error] = 'OpenID - Verification failed: ' + openid_response. when OpenID::Consumer::SUCCESS session[:openid][:identity] = openid_response.identity_url session[:openid][:sreg] = OpenID::SReg::Response.from_success_response(openid_response) flash[:success] = 'OpenID - Verification done.' end session.delete(:_openid_consumer_service) raw_redirect session[:openid][:entry] end |
#openid_login_form(caption = "login") ⇒ Object
Simple form for use or overwriting. Has to provide the same functionality when overwritten or directly embedded into a page.
27 28 29 30 31 32 33 34 |
# File 'lib/ramaze/helper/identity.rb', line 27 def openid_login_form(="login") %{ <form method="GET" action="#{Rs(:openid_begin)}"> Identity URL: <input type="text" name="url" /> <input type="submit" value="#{}"/> </form> } end |