Class: Jm81auth::OAuth::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/jm81auth/oauth/base.rb

Direct Known Subclasses

Facebook, Github

Instance Method Summary collapse

Constructor Details

#initialize(params) ⇒ Base

Setup @params from params param (Har, har). Also, set @access_token, either from params Hash, or by calling #get_access_token. @params is the expected params needed by #get_access_token.

Parameters:

  • params (Hash)

    Expected to contain :code, :redirectUri, :clientId, and, optionally, :access_token



14
15
16
17
18
19
20
21
22
23
# File 'lib/jm81auth/oauth/base.rb', line 14

def initialize params
  @params = {
    code: params[:code],
    redirect_uri: params[:redirectUri],
    client_id: params[:clientId],
    client_secret: Jm81auth.config.client_secrets[provider_name]
  }

  @access_token = params[:access_token] || get_access_token
end

Instance Method Details

#dataHash

Returns Data returned by accessing data URL.

Returns:

  • (Hash)

    Data returned by accessing data URL.



26
27
28
# File 'lib/jm81auth/oauth/base.rb', line 26

def data
  @data or get_data
end

#display_nameString

Returns Display name (e.g. “Jane Doe”) from data.

Returns:

  • (String)

    Display name (e.g. “Jane Doe”) from data.



31
32
33
# File 'lib/jm81auth/oauth/base.rb', line 31

def display_name
  data['name']
end

#emailString

Returns Email address from data.

Returns:

  • (String)

    Email address from data.



36
37
38
# File 'lib/jm81auth/oauth/base.rb', line 36

def email
  data['email']
end

#get_dataHash

Get data via get request to provider’s data URL.

Returns:

  • (Hash)


43
44
45
46
# File 'lib/jm81auth/oauth/base.rb', line 43

def get_data
  response = client.get(self.class::DATA_URL, access_token: @access_token)
  @data = JSON.parse(response.body)
end

#provider_dataHash

Returns provider_name and provider_id.

Returns:

  • (Hash)

    provider_name and provider_id



59
60
61
# File 'lib/jm81auth/oauth/base.rb', line 59

def provider_data
  { provider_name: provider_name, provider_id: provider_id }
end

#provider_idString

Returns Provider assigned ID, from data.

Returns:

  • (String)

    Provider assigned ID, from data.



54
55
56
# File 'lib/jm81auth/oauth/base.rb', line 54

def provider_id
  data['id'] || data['sub']
end

#provider_nameString

Returns Provider name, based on class name.

Returns:

  • (String)

    Provider name, based on class name.



49
50
51
# File 'lib/jm81auth/oauth/base.rb', line 49

def provider_name
  self.class.name.split('::').last.downcase
end