Class: Devise::Strategies::GoogleApps
- Inherits:
-
Base
- Object
- Base
- Devise::Strategies::GoogleApps
- Defined in:
- lib/warden-googleapps/devise_strategy.rb
Overview
Default strategy for signing in a user, based on his email and password. Redirects to sign_in page if it’s not authenticated
Constant Summary collapse
- AxEmail =
'http://axschema.org/contact/email'
- AxFirstName =
'http://axschema.org/namePerson/first'
- AxLastName =
'http://axschema.org/namePerson/last'
Instance Method Summary collapse
- #authenticate! ⇒ Object
-
#params ⇒ Object
Need to make sure that we have a pure representation of the query string.
Instance Method Details
#authenticate! ⇒ Object
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 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/warden-googleapps/devise_strategy.rb', line 18 def authenticate! if params['openid.mode'] response = consumer.complete(params, absolute_url(request, request.path)) case response.status.to_s when 'success' profile_data = extract_ax_profile(response) resource = mapping.to.find_by_identity_url(response.display_identifier) unless resource resource = mapping.to.new resource.first_name = profile_data[:first_name].join(' ') resource.last_name = profile_data[:last_name].join(' ') resource.email = profile_data[:email].join(' ') resource.identity_url = response.display_identifier begin pwd = (Kernel.rand*1000000000000000).to_i resource.password = pwd resource.password_confirmation = pwd rescue Error => e puts "You probably need authenticatable set on your model." end resource.save! end success!(resource) when 'failure', 'setup_needed', 'cancel' fail!('Cound not log in') else fail!("Unknown Response Status: #{response.status.to_s}") end elsif params['RelayState'] raise GoogleAppsMisconfiguredError, "Warden::GoogleApps only works with OpenID Federed Login for Google Apps" else google_discovery = OpenID.discover(open_id_endpoint) open_id_request = consumer.begin(google_discovery.first) add_ax_fields(open_id_request) redirect!(open_id_request.redirect_url(absolute_url(request), absolute_url(request))) end end |
#params ⇒ Object
Need to make sure that we have a pure representation of the query string. Rails adds an “action” parameter which causes the openid gem to error
14 15 16 |
# File 'lib/warden-googleapps/devise_strategy.rb', line 14 def params @params ||= Rack::Utils.parse_query(request.query_string) end |