Class: OpenIDTokenProxy::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/openid_token_proxy/client.rb

Defined Under Namespace

Classes: AuthCodeError, CredentialsError, RefreshTokenError

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(config = OpenIDTokenProxy.config) ⇒ Client

Returns a new instance of Client.



5
6
7
# File 'lib/openid_token_proxy/client.rb', line 5

def initialize(config = OpenIDTokenProxy.config)
  @config = config
end

Instance Attribute Details

#configObject

Returns the value of attribute config.



3
4
5
# File 'lib/openid_token_proxy/client.rb', line 3

def config
  @config
end

Instance Method Details

#authorization_uriObject



9
10
11
12
13
14
15
# 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_clientObject



55
56
57
58
59
60
61
62
63
64
# 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) ⇒ Object

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



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# 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