diff --git a/app/internal/types.py b/app/internal/types.py index 9356ab8..c3ac9b7 100644 --- a/app/internal/types.py +++ b/app/internal/types.py @@ -187,17 +187,28 @@ class System: class ActiveClient: """ - The active client model in memory for quicker access + The active client model in memory for quicker access """ websocket = None active_token: DiscordId = None - nickname = None - access_token = None + nickname: str = None + access_token: str = None - def __init__(self, websocket= None, active_token:DiscordId=None): + def __init__(self, websocket=None, active_token: DiscordId = None, nickname: str = None, access_token: str = None): self.active_token = active_token self.websocket = websocket + self.nickname = nickname + self.access_token = access_token + def __str__(self): + """ + Returns a neatly formatted string representation of the ActiveClient object. + """ + return (f"--- Active Client ---\n" + f"Active Token: {self.active_token if self.active_token else 'N/A'}\n" + f"Nickname: {self.nickname if self.nickname else 'N/A'}\n" + f"Access Token: {'[REDACTED]' if self.access_token else 'N/A'}\n" + f"Websocket Connected: {'Yes' if self.websocket else 'No'}") class UserRoles(str, Enum): ADMIN = "admin" diff --git a/app/routers/auth.py b/app/routers/auth.py index f6c0557..a37637e 100644 --- a/app/routers/auth.py +++ b/app/routers/auth.py @@ -24,7 +24,8 @@ def role_required(required_role: UserRoles): auth_type = current_user_identity['type'] if auth_type == "node": - node = app.active_clients.get("client_id") + node = current_app.active_clients.get(user_id) + print("Node", node) if not node: abort(401, "Node not found or invalid token.") diff --git a/app/routers/bot.py b/app/routers/bot.py index 78e9fa6..05c5c4b 100644 --- a/app/routers/bot.py +++ b/app/routers/bot.py @@ -45,7 +45,9 @@ async def request_token_route(): # --- Logic for selecting a preferred ID based on client_id (TODO) --- selected_id = avail_ids[0] + print("Selected Discord ID: ", selected_id) current_app.active_clients[client_id].active_token = selected_id + print(current_app.active_clients[client_id]) # --- End of logic for selecting a preferred ID --- diff --git a/app/routers/nodes.py b/app/routers/nodes.py index b78d734..e9326a0 100644 --- a/app/routers/nodes.py +++ b/app/routers/nodes.py @@ -26,6 +26,8 @@ async def register_client(websocket, client_id, client_nickname): # Create a JWT for the client current_app.active_clients[client_id].access_token = create_access_token(identity={"id": client_id, "username": client_nickname, "type": "node"}) + print(current_app.active_clients[client_id]) + # Start a task to listen for messages from this client asyncio.create_task(listen_to_client(websocket, client_id))