class OpenIDTokenProxy::Client

Attributes

config[RW]

Public Class Methods

new(config = OpenIDTokenProxy.config) click to toggle source
# File lib/openid_token_proxy/client.rb, line 5
def initialize(config = OpenIDTokenProxy.config)
  @config = config
end

Public Instance Methods

authorization_uri() click to toggle source
# File lib/openid_token_proxy/client.rb, line 9
def authorization_uri
  config.authorization_uri || new_client.authorization_uri(
    domain_hint: config.domain_hint,
    prompt: config.prompt,
    resource: config.resource
  )
end
new_client() click to toggle source
# File lib/openid_token_proxy/client.rb, line 55
def new_client
  OpenIDConnect::Client.new(
    identifier:             config.client_id,
    secret:                 config.client_secret,
    authorization_endpoint: config.authorization_endpoint,
    token_endpoint:         config.token_endpoint,
    userinfo_endpoint:      config.userinfo_endpoint,
    redirect_uri:           config.redirect_uri
  )
end
retrieve_token!(params) click to toggle source

Retrieves a token for given auth code, refresh token or username/password

# File lib/openid_token_proxy/client.rb, line 27
def retrieve_token!(params)
  client = new_client

  if auth_code = params.delete(:auth_code)
    client.authorization_code = auth_code
  end

  if refresh_token = params.delete(:refresh_token)
    client.refresh_token = refresh_token
  end

  if username = params.delete(:username)
    client.resource_owner_credentials = [
      username,
      params.delete(:password)
    ]
  end

  response = client.access_token!(:query_string, params)
  token = Token.decode!(response.access_token)
  token.refresh_token = response.refresh_token
  token
rescue Rack::OAuth2::Client::Error => e
  raise AuthCodeError.new(e.message) if auth_code
  raise RefreshTokenError.new(e.message) if refresh_token
  raise CredentialsError.new(e.message) if username
end