class OmniAuth::Strategies::LibLynx
Public Instance Methods
access_token()
click to toggle source
# File lib/omniauth/strategies/liblynx.rb, line 92 def access_token @access_token ||= client.client_credentials.get_token @access_token = @access_token.refresh! if @access_token.expired? @access_token end
callback_phase()
click to toggle source
# File lib/omniauth/strategies/liblynx.rb, line 81 def callback_phase @auth_url = [ id_body[:url], '?', URI.encode_www_form(request.params) ].join return fail!(:no_account_info, NoAccountInfo.new) if raw_info.blank? env['omniauth.auth'] = auth_hash call_app! end
callback_url()
click to toggle source
# File lib/omniauth/strategies/liblynx.rb, line 29 def callback_url options[:callback_url] || (full_host + script_name + callback_path) end
raw_info()
click to toggle source
# File lib/omniauth/strategies/liblynx.rb, line 66 def raw_info @raw_info ||= begin r = access_token .request(:post, options.id_url, body: id_body.merge(url: @auth_url)) .parsed ref = r.dig('account', 'publisher_reference') { '_response' => r, 'reference' => ref } .compact .merge(r['account_individual'] || {}) end end
request_phase()
click to toggle source
# File lib/omniauth/strategies/liblynx.rb, line 49 def request_phase res = access_token .request(:post, options.id_url, body: id_body) .parsed email = id_body[:email] || '' if email.present? institution = res['user_institution'] return fail!(:no_institution, NoInstitution.new) unless institution account_name = institution['account_name'] log(:info, "User institution: #{institution}") end id = res['id'] url = URI.join(callback_url, "?email=#{CGI.escape(email)}&institution=#{CGI.escape(account_name.to_s)}").to_s hmac = OpenSSL::HMAC.hexdigest('SHA256', client.secret, url) redirect("#{client.site}/wayf/#{id}?url=#{CGI.escape(url)}&hash=#{hmac}") end
Private Instance Methods
id_body()
click to toggle source
# File lib/omniauth/strategies/liblynx.rb, line 100 def id_body { ip: request.ip, url: request.params['url'] || callback_url, user_agent: request.user_agent, email: request.params['email'], forceSsoLogin: request.params['force_sso_login'] }.compact end