Class: HolisticAuth::Providers::GenericProvider

Inherits:
Object
  • Object
show all
Defined in:
lib/holistic_auth/providers/generic_provider.rb

Direct Known Subclasses

Google, MsGraph, Stub

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ GenericProvider

Returns a new instance of GenericProvider.



16
17
18
19
20
21
22
23
24
# File 'lib/holistic_auth/providers/generic_provider.rb', line 16

def initialize(options = {})
  @client_id = options.delete :client_id
  @client_secret = options.delete :client_secret
  @site = options.delete(:site) || settings[:site]
  @token_url = options.delete(:token_url) || settings[:token_url]
  @api_key = options.delete :api_key
  @user_info_url = options.delete(:user_info_url) || settings[:user_info_url]
  @additional_parameters = options.delete(:additional_parameters) || settings[:additional_parameters] || {}
end

Instance Attribute Details

#api_keyObject

Returns the value of attribute api_key.



6
7
8
# File 'lib/holistic_auth/providers/generic_provider.rb', line 6

def api_key
  @api_key
end

#client_idObject

Returns the value of attribute client_id.



6
7
8
# File 'lib/holistic_auth/providers/generic_provider.rb', line 6

def client_id
  @client_id
end

#client_secretObject

Returns the value of attribute client_secret.



6
7
8
# File 'lib/holistic_auth/providers/generic_provider.rb', line 6

def client_secret
  @client_secret
end

#oauth2_clientObject (readonly)

Returns the value of attribute oauth2_client.



14
15
16
# File 'lib/holistic_auth/providers/generic_provider.rb', line 14

def oauth2_client
  @oauth2_client
end

#siteObject

Returns the value of attribute site.



6
7
8
# File 'lib/holistic_auth/providers/generic_provider.rb', line 6

def site
  @site
end

#tenant_idObject

Returns the value of attribute tenant_id.



6
7
8
# File 'lib/holistic_auth/providers/generic_provider.rb', line 6

def tenant_id
  @tenant_id
end

#token_urlObject

Returns the value of attribute token_url.



6
7
8
# File 'lib/holistic_auth/providers/generic_provider.rb', line 6

def token_url
  @token_url
end

#user_info_urlObject

Returns the value of attribute user_info_url.



6
7
8
# File 'lib/holistic_auth/providers/generic_provider.rb', line 6

def 
  @user_info_url
end

Instance Method Details

#add_secrets(options = {}) ⇒ Object



26
27
28
29
30
31
32
# File 'lib/holistic_auth/providers/generic_provider.rb', line 26

def add_secrets(options = {})
  @client_id = options.delete :client_id if options[:client_id]
  @client_secret = options.delete :client_secret if options[:client_secret]
  @api_key = options.delete :api_key if options[:api_key]
  @tenant_id = options.delete :tenant_id if options[:tenant_id]
  @additional_parameters.merge!(options.delete(:additional_parameters)) if options[:additional_parameters]
end

#empty?Boolean

Returns:

  • (Boolean)


93
94
95
# File 'lib/holistic_auth/providers/generic_provider.rb', line 93

def empty?
  site.nil? || token_url.nil?
end

#exchange(auth_code, redirect_uri) ⇒ Object



47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/holistic_auth/providers/generic_provider.rb', line 47

def exchange(auth_code, redirect_uri)
  errors = []
  errors << 'auth_code missing' if auth_code.blank?
  errors << 'redirect_uri missing' if redirect_uri.blank?
  errors << 'Client ID not set' if client_id.blank?
  errors << 'Client Secret not set' if client_secret.blank?

  raise "Cannot exchange auth code:\n#{errors}" if errors.present?

  @oauth2_client = OAuth2::Client.new(client_id, client_secret, to_hash)
  @oauth2_client.auth_code.get_token(auth_code, redirect_uri: redirect_uri)
end

#full_site_urlObject



68
69
70
71
# File 'lib/holistic_auth/providers/generic_provider.rb', line 68

def full_site_url
  raise "site not specified for class #{self}" unless site.present?
  site
end

#name(*_params) ⇒ Object



64
65
66
# File 'lib/holistic_auth/providers/generic_provider.rb', line 64

def name(*_params)
  raise 'Generic provider doesn\'t have a name'
end

#present?Boolean

Returns:

  • (Boolean)


89
90
91
# File 'lib/holistic_auth/providers/generic_provider.rb', line 89

def present?
  !empty?
end

#retrieve_user_info(*_params) ⇒ Object



60
61
62
# File 'lib/holistic_auth/providers/generic_provider.rb', line 60

def (*_params)
  raise 'Not implemented'
end

#secretsObject



38
39
40
41
42
43
44
45
# File 'lib/holistic_auth/providers/generic_provider.rb', line 38

def secrets
  sec = {}
  sec[:client_id] = @client_id if @client_id
  sec[:client_secret] = @client_secret if @client_secret
  sec[:api_key] = @api_key if @api_key

  sec
end

#settingsObject



34
35
36
# File 'lib/holistic_auth/providers/generic_provider.rb', line 34

def settings
  {}
end

#site_token_urlObject



73
74
75
# File 'lib/holistic_auth/providers/generic_provider.rb', line 73

def site_token_url
  full_site_url + token_url
end

#to_hashObject Also known as: inspect



77
78
79
80
81
82
83
84
85
86
87
# File 'lib/holistic_auth/providers/generic_provider.rb', line 77

def to_hash
  {
    client_id: @client_id,
    client_secret: @client_secret,
    site: full_site_url,
    token_url: @token_url,
    api_key: @api_key,
    user_info_url: @user_info_url,
    additional_parameters: @additional_parameters,
  }
end