Module: SyncAttrWithAuth0::Auth0

Defined in:
lib/sync_attr_with_auth0/auth0.rb

Class Method Summary collapse

Class Method Details

.create_auth0_client(api_version: 2, global_client_id: , global_client_secret: , client_id: , client_secret: , namespace: ) ⇒ Object



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

def self.create_auth0_client(
  api_version: 2,
  global_client_id: ENV['AUTH0_GLOBAL_CLIENT_ID'],
  global_client_secret: ENV['AUTH0_GLOBAL_CLIENT_SECRET'],
  client_id: ENV['AUTH0_CLIENT_ID'],
  client_secret: ENV['AUTH0_CLIENT_SECRET'],
  namespace: ENV['AUTH0_DOMAIN']
)
  case api_version
  when 1
    auth0 = Auth0Client.new(client_id: client_id, client_secret: client_secret, namespace: namespace)
  when 2
    jwt = SyncAttrWithAuth0::Auth0.create_auth0_jwt(global_client_id: global_client_id, global_client_secret: global_client_secret)
    auth0 = Auth0Client.new(api_version: 2, access_token: jwt, namespace: namespace)
  end

  return auth0
end

.create_auth0_jwt(global_client_id: ENV['AUTH0_GLOBAL_CLIENT_ID'], global_client_secret: ENV['AUTH0_GLOBAL_CLIENT_SECRET']) ⇒ Object



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

def self.create_auth0_jwt(global_client_id: ENV['AUTH0_GLOBAL_CLIENT_ID'], global_client_secret: ENV['AUTH0_GLOBAL_CLIENT_SECRET'])
  payload = {
    'aud' => global_client_id,
    'scopes' => {
      'users' => {
        'actions' => ['create', 'update', 'read']
      }
    },
    'iat' => Time.now.to_i,
    'jti' => UUIDTools::UUID.timestamp_create.to_s
  }

  jwt = JWT.encode(payload, JWT.base64url_decode(global_client_secret))

  return jwt
end