class OmniAuth::Strategies::Vatsim
Public Instance Methods
parse_callback()
click to toggle source
Parse the callback for user information
# File lib/omniauth/strategies/vatsim.rb, line 39 def parse_callback MultiJson.decode(self.extra['access_token'].params.keys[1])['user'] end
request_phase()
click to toggle source
Customize the OAuth request phase to handle VATSIM SSO
# File lib/omniauth/strategies/vatsim.rb, line 44 def request_phase request_token = consumer.get_request_token({oauth_callback: callback_url}, options.request_params) do |response_body| # Debug the response body # log :debug, response_body.inspect # Log errors if MultiJson.decode(response_body)['request']['result'] == 'fail' log :error, MultiJson.decode(response_body)['request']['message'] end # symbolize string keys returned by VATSIM SSO MultiJson.decode(response_body)['token'].symbolize_keys end session['oauth'] ||= {} session['oauth'][name.to_s] = { 'callback_confirmed': request_token.callback_confirmed?, 'request_token': request_token.token, 'request_secret': request_token.secret } if request_token.callback_confirmed? redirect request_token.authorize_url(options[:authorize_params]) else redirect request_token.authorize_url(options[:authorize_params].merge(oauth_callback: callback_url)) end rescue ::Timeout::Error => e fail!(:timeout, e) rescue ::Net::HTTPFatalError, ::OpenSSL::SSL::SSLError => e fail!(:service_unavailable, e) end