wallaroo.user
1import json 2from typing import TYPE_CHECKING, Any, Dict 3 4import requests 5 6from .version import _user_agent 7 8if TYPE_CHECKING: 9 # Imports that happen below in methods to fix circular import dependency 10 # issues need to also be specified here to satisfy mypy type checking. 11 pass 12 13 14class User: 15 """A platform User.""" 16 17 def __init__(self, client, data: Dict[str, Any], standalone=False) -> None: 18 self.client = client 19 self._id = data["id"] 20 self._email = data["email"] if "email" in data else "admin@keycloak" 21 self._username = data["username"] 22 self._enabled = data["enabled"] 23 self._createdTimeastamp = data["createdTimestamp"] 24 25 def __repr__(self): 26 return f"""User({{"id": "{self.id()}", "email": "{self.email()}", "username": "{self.username()}", "enabled": "{self.enabled()})""" 27 28 def id(self) -> str: 29 return self._id 30 31 def email(self) -> str: 32 return self._email 33 34 def username(self) -> str: 35 return self._username 36 37 def enabled(self) -> bool: 38 return self._enabled 39 40 @staticmethod 41 def list_users( 42 auth, 43 api_endpoint: str = "http://api-lb:8080", 44 auth_endpoint: str = "http://api-lb:8080", 45 ): 46 headers = { 47 "authorization": auth._bearer_token_str(), 48 "user-agent": _user_agent, 49 } 50 users = requests.post( 51 f"{api_endpoint}/v1/api/users/query", data="{}", headers=headers 52 ) 53 if users.status_code > 299: 54 raise Exception("Failed to list exiting users.") 55 return users.json()["users"].values() 56 57 @staticmethod 58 def invite_user( 59 email, 60 password, 61 auth, 62 api_endpoint: str = "http://api-lb:8080", 63 auth_endpoint: str = "http://api-lb:8080", 64 ): 65 # TODO: Refactor User.list_users() here when this stabilizes 66 67 headers = { 68 "authorization": auth._bearer_token_str(), 69 "user-agent": _user_agent, 70 } 71 users = requests.post( 72 f"{api_endpoint}/v1/api/users/query", data=json.dumps({}), headers=headers 73 ) 74 if users.status_code > 299: 75 print(users.content) 76 print(users.text) 77 raise Exception("Failed to list exiting users.") 78 existing_users = users.json()["users"].values() 79 user_present = [user for user in existing_users if user["username"] == email] 80 if len(user_present) == 0: 81 data = {"email": email} 82 if password: 83 data["password"] = password 84 user = response = users = requests.post( 85 f"{api_endpoint}/v1/api/users/invite", 86 json=data, 87 headers=headers, 88 ).json() 89 return user 90 else: 91 return user_present[0]
class
User:
15class User: 16 """A platform User.""" 17 18 def __init__(self, client, data: Dict[str, Any], standalone=False) -> None: 19 self.client = client 20 self._id = data["id"] 21 self._email = data["email"] if "email" in data else "admin@keycloak" 22 self._username = data["username"] 23 self._enabled = data["enabled"] 24 self._createdTimeastamp = data["createdTimestamp"] 25 26 def __repr__(self): 27 return f"""User({{"id": "{self.id()}", "email": "{self.email()}", "username": "{self.username()}", "enabled": "{self.enabled()})""" 28 29 def id(self) -> str: 30 return self._id 31 32 def email(self) -> str: 33 return self._email 34 35 def username(self) -> str: 36 return self._username 37 38 def enabled(self) -> bool: 39 return self._enabled 40 41 @staticmethod 42 def list_users( 43 auth, 44 api_endpoint: str = "http://api-lb:8080", 45 auth_endpoint: str = "http://api-lb:8080", 46 ): 47 headers = { 48 "authorization": auth._bearer_token_str(), 49 "user-agent": _user_agent, 50 } 51 users = requests.post( 52 f"{api_endpoint}/v1/api/users/query", data="{}", headers=headers 53 ) 54 if users.status_code > 299: 55 raise Exception("Failed to list exiting users.") 56 return users.json()["users"].values() 57 58 @staticmethod 59 def invite_user( 60 email, 61 password, 62 auth, 63 api_endpoint: str = "http://api-lb:8080", 64 auth_endpoint: str = "http://api-lb:8080", 65 ): 66 # TODO: Refactor User.list_users() here when this stabilizes 67 68 headers = { 69 "authorization": auth._bearer_token_str(), 70 "user-agent": _user_agent, 71 } 72 users = requests.post( 73 f"{api_endpoint}/v1/api/users/query", data=json.dumps({}), headers=headers 74 ) 75 if users.status_code > 299: 76 print(users.content) 77 print(users.text) 78 raise Exception("Failed to list exiting users.") 79 existing_users = users.json()["users"].values() 80 user_present = [user for user in existing_users if user["username"] == email] 81 if len(user_present) == 0: 82 data = {"email": email} 83 if password: 84 data["password"] = password 85 user = response = users = requests.post( 86 f"{api_endpoint}/v1/api/users/invite", 87 json=data, 88 headers=headers, 89 ).json() 90 return user 91 else: 92 return user_present[0]
A platform User.
User(client, data: Dict[str, Any], standalone=False)
18 def __init__(self, client, data: Dict[str, Any], standalone=False) -> None: 19 self.client = client 20 self._id = data["id"] 21 self._email = data["email"] if "email" in data else "admin@keycloak" 22 self._username = data["username"] 23 self._enabled = data["enabled"] 24 self._createdTimeastamp = data["createdTimestamp"]
@staticmethod
def
list_users( auth, api_endpoint: str = 'http://api-lb:8080', auth_endpoint: str = 'http://api-lb:8080'):
41 @staticmethod 42 def list_users( 43 auth, 44 api_endpoint: str = "http://api-lb:8080", 45 auth_endpoint: str = "http://api-lb:8080", 46 ): 47 headers = { 48 "authorization": auth._bearer_token_str(), 49 "user-agent": _user_agent, 50 } 51 users = requests.post( 52 f"{api_endpoint}/v1/api/users/query", data="{}", headers=headers 53 ) 54 if users.status_code > 299: 55 raise Exception("Failed to list exiting users.") 56 return users.json()["users"].values()
@staticmethod
def
invite_user( email, password, auth, api_endpoint: str = 'http://api-lb:8080', auth_endpoint: str = 'http://api-lb:8080'):
58 @staticmethod 59 def invite_user( 60 email, 61 password, 62 auth, 63 api_endpoint: str = "http://api-lb:8080", 64 auth_endpoint: str = "http://api-lb:8080", 65 ): 66 # TODO: Refactor User.list_users() here when this stabilizes 67 68 headers = { 69 "authorization": auth._bearer_token_str(), 70 "user-agent": _user_agent, 71 } 72 users = requests.post( 73 f"{api_endpoint}/v1/api/users/query", data=json.dumps({}), headers=headers 74 ) 75 if users.status_code > 299: 76 print(users.content) 77 print(users.text) 78 raise Exception("Failed to list exiting users.") 79 existing_users = users.json()["users"].values() 80 user_present = [user for user in existing_users if user["username"] == email] 81 if len(user_present) == 0: 82 data = {"email": email} 83 if password: 84 data["password"] = password 85 user = response = users = requests.post( 86 f"{api_endpoint}/v1/api/users/invite", 87 json=data, 88 headers=headers, 89 ).json() 90 return user 91 else: 92 return user_present[0]