Class: Omniauth::Strategies::Gov

Inherits:
OmniAuth::Strategies::OAuth2
  • Object
show all
Defined in:
lib/omniauth/strategies/gov.rb

Instance Method Summary collapse

Instance Method Details

#authorize_paramsObject

rubocop:disable Metrics/AbcSize, Metrics/MethodLength



60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/omniauth/strategies/gov.rb', line 60

def authorize_params # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
  options.authorize_params[:state] = SecureRandom.hex(24)
  options.authorize_params[:client_id] = options[:client_id]
  options.authorize_params[:scope] = options[:scope]
  options.authorize_params[:response_type] = 'code'
  options.authorize_params[:nonce] = SecureRandom.hex[0..11]
  params = options.authorize_params
    .merge(options_for("authorize"))
    .merge(pkce_authorize_params)

  session["omniauth.pkce.verifier"] = options.pkce_verifier if options.pkce
  session["omniauth.state"] = params[:state]

  params
end

#build_access_tokenObject



76
77
78
79
80
81
82
83
84
85
# File 'lib/omniauth/strategies/gov.rb', line 76

def build_access_token
  verifier = request.params["code"]
  redirect_uri = "#{options.app_url}/#{options.callback_path}".gsub!(%r{/+}, '/')
  
  atoken = client.auth_code.get_token(
    verifier, 
    {"grant_type": "authorization_code", "code": verifier, "redirect_uri": redirect_uri, "code_verifier": session["omniauth.pkce.verifier"]}, 
    {"Content-Type"  => "application/x-www-form-urlencoded", "Authorization" => "Basic #{Base64.strict_encode64(options.client_id+":"+options.client_secret)}" })
  atoken
end

#clientObject



55
56
57
58
# File 'lib/omniauth/strategies/gov.rb', line 55

def client
  options.client_options.merge!({connection_opts: {request: {params_encoder: GovBr::ParamsEncoder}}})
  ::OAuth2::Client.new(options.client_id, options.client_secret, deep_symbolize(options.client_options))
end

#prune!(hash) ⇒ Object



48
49
50
51
52
53
# File 'lib/omniauth/strategies/gov.rb', line 48

def prune!(hash)
  hash.delete_if do |_, value|
    prune!(value) if value.is_a?(Hash)
    value.nil? || (value.respond_to?(:empty?) && value.empty?)
  end
end

#raw_infoObject



44
45
46
# File 'lib/omniauth/strategies/gov.rb', line 44

def raw_info
  @raw_info ||= JWT.decode(credentials["id_token"], nil, false)[0]
end