Module: SyncAttrWithAuth0::Auth0

Defined in:
lib/sync_attr_with_auth0/auth0.rb

Defined Under Namespace

Classes: InvalidAuth0ConfigurationException

Class Method Summary collapse

Class Method Details

.create_auth0_client(api_version: 2, config: SyncAttrWithAuth0.configuration) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/sync_attr_with_auth0/auth0.rb', line 8

def self.create_auth0_client(
  api_version: 2,
  config: SyncAttrWithAuth0.configuration
)
  validate_auth0_config_for_api(api_version, config: config)

  auth0 = Auth0Client.new(
    client_id: config.auth0_client_id,
    client_secret: config.auth0_client_secret,
    domain: config.auth0_namespace
  )

  return auth0
end

.create_user(params, config: SyncAttrWithAuth0.configuration) ⇒ Object



64
65
66
67
# File 'lib/sync_attr_with_auth0/auth0.rb', line 64

def self.create_user(params, config: SyncAttrWithAuth0.configuration)
  auth0 = SyncAttrWithAuth0::Auth0.create_auth0_client(config: config)
  return auth0.create_user(params.delete('connection'), params)
end

.find_users_by_email(email, exclude_user_id: nil, config: SyncAttrWithAuth0.configuration) ⇒ Object



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/sync_attr_with_auth0/auth0.rb', line 42

def self.find_users_by_email(email, exclude_user_id: nil, config: SyncAttrWithAuth0.configuration)
  auth0 = SyncAttrWithAuth0::Auth0.create_auth0_client(config: config)

  # Use the Lucene search because Find by Email is case sensitive
  query = "email:#{email}"
  unless config.search_connections.empty?
    conn_query = config.search_connections
      .collect { |conn| %Q{identities.connection:"#{conn}"} }
      .join ' OR '
    query = "#{query} AND (#{conn_query})"
  end

  results = auth0.get('/api/v2/users', q: query, search_engine: 'v3')

  if exclude_user_id
    results = results.reject { |r| r['user_id'] == exclude_user_id }
  end

  return results
end

.patch_user(uid, params, config: SyncAttrWithAuth0.configuration) ⇒ Object



70
71
72
73
74
# File 'lib/sync_attr_with_auth0/auth0.rb', line 70

def self.patch_user(uid, params, config: SyncAttrWithAuth0.configuration)
  auth0 = SyncAttrWithAuth0::Auth0.create_auth0_client(config: config)

  return auth0.patch_user(uid, params)
end

.validate_auth0_config_for_api(api_version = 2, config: SyncAttrWithAuth0.configuration) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/sync_attr_with_auth0/auth0.rb', line 24

def self.validate_auth0_config_for_api(api_version=2, config: SyncAttrWithAuth0.configuration)
  settings_to_validate = []
  invalid_settings = []

  settings_to_validate = [:auth0_client_id, :auth0_client_secret, :auth0_namespace]

  settings_to_validate.each do |setting_name|
    unless config.send(setting_name)
      invalid_settings << setting_name
    end
  end

  if invalid_settings.length > 0
    raise InvalidAuth0ConfigurationException.new("The following required auth0 settings were invalid: #{invalid_settings.join(', ')}")
  end
end