def openid_begin
url = request['url']
redirect_referrer if url.to_s.empty?
session[:openid] ||= {}
session[:openid][:entry] = request.referrer
openid_request = openid_consumer.begin(url)
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)
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
end
rescue OpenID::OpenIDError => ex
flash[:error] = "Discovery failed for #{url}: #{ex}"
raw_redirect rs(:/)
end