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