Source code for parsons.auth0.auth0

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())