from parsons.etl.table import Table
from parsons.utilities import check_env
import requests
[docs]class Auth0(object):
"""
Instantiate the Auth0 class
`Args:`
client_id: str
The Auth0 client ID. Not required if ``AUTH0_CLIENT_ID`` env variable set.
client_secret: str
The Auth0 client secret. Not required if ``AUTH0_CLIENT_SECRET`` env variable set.
domain: str
The Auth0 domain. Not required if ``AUTH0_DOMAIN`` env variable set.
`Returns:`
Auth0 Class
"""
def __init__(self, client_id=None, client_secret=None, domain=None):
self.base_url = f"https://{check_env.check('AUTH0_DOMAIN', domain)}"
access_token = requests.post(f'{self.base_url}/oauth/token', data={
'grant_type': 'client_credentials', # OAuth 2.0 flow to use
'client_id': check_env.check('AUTH0_CLIENT_ID', client_id),
'client_secret': check_env.check('AUTH0_CLIENT_SECRET', client_secret),
'audience': f'{self.base_url}/api/v2/'
}).json().get('access_token')
self.headers = {
'Authorization': f'Bearer {access_token}',
'Content-Type': 'application/json'
}
[docs] def delete_user(self, id):
"""
Delete Auth0 user.
`Args:`
id: str
The user ID of the record to delete.
`Returns:`
int
"""
return requests.delete(
f'{self.base_url}/api/v2/users/{id}', headers=self.headers
).status_code
[docs] def get_users_by_email(self, email):
"""
Get Auth0 users by email.
`Args:`
email: str
The user email of the record to get.
`Returns:`
Table Class
"""
return Table(requests.get(
f'{self.base_url}/api/v2/users-by-email', headers=self.headers, params={'email': email}
).json())