7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
# File 'app/controllers/validates.rb', line 7
def openid
if request.params[:'openid.mode']
response = consumer.complete(request.send(:query_params), "#{request.protocol}://#{request.host}" + request.path)
case response.status.to_s
when 'success'
Merb.logger.info("Quickadmin found - #{Quickadmin::Admin.find(response.identity_url)}")
if session[:quickadmin] = Quickadmin::Admin.find(response.identity_url)
redirect session[:return_to] ? session[:return_to] : '/'
else
render
end
when 'failure'
message[:notice] = "OpenID verification failed!"
render
when 'setup_needed'
message[:notice] = "You're OpenID needs setup!"
render
when 'cancel'
message[:notice] = "You cancelled the OpenID login!"
render
end
elsif identity_url = params[:openid_url]
begin
openid_request = consumer.begin(identity_url)
openid_reg = ::OpenID::SReg::Request.new
openid_reg.request_fields(required_reg_fields)
openid_request.add_extension(openid_reg)
redirect(openid_request.redirect_url("#{request.protocol}://#{request.host}", openid_callback_url))
rescue ::OpenID::OpenIDError => e
message[:notice] = "There was a failure communicating with the OpenID provider"
render
end
else
render
end
end
|