diff --git a/app/internal/types.py b/app/internal/types.py index d4fc587..c495d1d 100644 --- a/app/internal/types.py +++ b/app/internal/types.py @@ -191,22 +191,22 @@ class ActiveClient: """ client_id: str = None websocket = None - active_token: str = None + active_token: DiscordId = None nickname: str = None access_token: str = None - def __init__(self, client_id: str=None, websocket=None, active_token: str = None, nickname: str = None, access_token: str = None): + def __init__(self, client_id: str=None, websocket=None, active_token: DiscordId = None, nickname: str = None, access_token: str = None): self.client_id = client_id self.active_token = active_token self.websocket = websocket self.nickname = nickname self.access_token = access_token - def json(self): + def to_dict(self): return { "client_id": self.client_id, "nickname": self.nickname, - "active_token": self.active_token + "active_token": self.active_token.to_dict() } def __str__(self): diff --git a/app/routers/nodes.py b/app/routers/nodes.py index be240a3..7c1aad9 100644 --- a/app/routers/nodes.py +++ b/app/routers/nodes.py @@ -151,7 +151,7 @@ async def send_command_to_all_clients(command_name, *args): @role_required(UserRoles.USER) async def get_nodes(): """API endpoint to list currently connected client IDs.""" - return jsonify([current_app.active_clients[client_id].json() for client_id in current_app.active_clients]) + return jsonify([current_app.active_clients[client_id].to_dict() for client_id in current_app.active_clients]) @nodes_bp.route("/online", methods=['GET']) diff --git a/app/server.py b/app/server.py index e0d7279..779824e 100644 --- a/app/server.py +++ b/app/server.py @@ -43,6 +43,11 @@ async def websocket_server_handler(websocket): client_id = handshake_data["id"] client_nickname = handshake_data.get("nickname") client_active_token = handshake_data.get("active_token") + # Get the DiscordId for the passed token + if client_active_token: + active_discord_id = await app.d_id_db_h.find_discord_id({"token":client_active_token}) + if active_discord_id: + client_active_token = active_discord_id await register_client(websocket, client_id, client_nickname, client_active_token) if not app.active_clients[client_id].access_token: abort(500, "Error retrieving access token")