class OmniAuth::Strategies::Globus
Public Instance Methods
custom_build_access_token()
click to toggle source
# File lib/omniauth/strategies/globus.rb, line 73 def custom_build_access_token get_access_token(request) end
Also aliased as: build_access_token
raw_info()
click to toggle source
# File lib/omniauth/strategies/globus.rb, line 69 def raw_info @raw_info ||= access_token.get(options.client_options.userinfo_endpoint).parsed end
Private Instance Methods
callback_url()
click to toggle source
# File lib/omniauth/strategies/globus.rb, line 81 def callback_url options[:redirect_uri] || (full_host + script_name + callback_path) end
client_get_token(verifier, redirect_uri)
click to toggle source
# File lib/omniauth/strategies/globus.rb, line 106 def client_get_token(verifier, redirect_uri) client.auth_code.get_token(verifier, get_token_options(redirect_uri), get_token_params) end
get_access_token(request)
click to toggle source
# File lib/omniauth/strategies/globus.rb, line 85 def get_access_token(request) verifier = request.params["code"] redirect_uri = request.params["redirect_uri"] if verifier && request.xhr? client_get_token(verifier, redirect_uri || "postmessage") elsif verifier client_get_token(verifier, redirect_uri || callback_url) elsif verify_token(request.params["access_token"]) ::OAuth2::AccessToken.from_hash(client, request.params.dup) elsif request.content_type =~ /json/i begin body = JSON.parse(request.body.read) request.body.rewind # rewind request body for downstream middlewares verifier = body && body["code"] client_get_token(verifier, "postmessage") if verifier rescue JSON::ParserError => e warn "[omniauth globus] JSON parse error=#{e}" end end end
get_scope(params)
click to toggle source
# File lib/omniauth/strategies/globus.rb, line 114 def get_scope(params) raw_scope = params[:scope] || options.scope scope_list = raw_scope.split(" ").map { |item| item.split(",") }.flatten scope_list.join(" ") end
get_token_options(redirect_uri = "")
click to toggle source
# File lib/omniauth/strategies/globus.rb, line 120 def get_token_options(redirect_uri = "") { redirect_uri: redirect_uri }.merge(token_params.to_hash(symbolize_keys: true)) end
get_token_params()
click to toggle source
# File lib/omniauth/strategies/globus.rb, line 110 def get_token_params deep_symbolize(options.auth_token_params || {}) end
prune!(hash)
click to toggle source
# File lib/omniauth/strategies/globus.rb, line 124 def prune!(hash) hash.delete_if do |_, v| prune!(v) if v.is_a?(Hash) v.nil? || (v.respond_to?(:empty?) && v.empty?) end end
strip_unnecessary_query_parameters(query_parameters)
click to toggle source
# File lib/omniauth/strategies/globus.rb, line 131 def strip_unnecessary_query_parameters(query_parameters) # strip `sz` parameter (defaults to sz=50) which overrides `image_size` options return nil if query_parameters.nil? params = CGI.parse(query_parameters) stripped_params = params.delete_if { |key| key == "sz" } # don't return an empty Hash since that would result # in URLs with a trailing ? character: http://image.url? return nil if stripped_params.empty? URI.encode_www_form(stripped_params) end
verify_token(access_token)
click to toggle source
# File lib/omniauth/strategies/globus.rb, line 145 def verify_token(access_token) return false unless access_token raw_response = client.request(:get, options.client_options.userinfo_endpoint, params: { access_token: access_token }).parsed raw_response["aud"] == options.client_id end