|
@@ -123,21 +123,27 @@ async def ws_global(websocket: WebSocket, token: str = Query(...)):
|
|
|
async def ws_chat(websocket: WebSocket, token: str = Query(...), order_id: int = Query(...)):
|
|
async def ws_chat(websocket: WebSocket, token: str = Query(...), order_id: int = Query(...)):
|
|
|
payload = auth_utils.decode_token(token)
|
|
payload = auth_utils.decode_token(token)
|
|
|
if not payload:
|
|
if not payload:
|
|
|
|
|
+ print(f"DEBUG: Chat WS Auth failed for Order #{order_id}")
|
|
|
await websocket.close(code=4001)
|
|
await websocket.close(code=4001)
|
|
|
return
|
|
return
|
|
|
role = payload.get("role")
|
|
role = payload.get("role")
|
|
|
user_id = payload.get("id")
|
|
user_id = payload.get("id")
|
|
|
|
|
+ print(f"DEBUG: Chat WS connection attempt for Order #{order_id} from User #{user_id} (Role: {role})")
|
|
|
|
|
+
|
|
|
if role != 'admin':
|
|
if role != 'admin':
|
|
|
user_info = db.execute_query("SELECT can_chat FROM users WHERE id = %s", (user_id,))
|
|
user_info = db.execute_query("SELECT can_chat FROM users WHERE id = %s", (user_id,))
|
|
|
if not user_info or not user_info[0]['can_chat']:
|
|
if not user_info or not user_info[0]['can_chat']:
|
|
|
|
|
+ print(f"DEBUG: Chat WS rejected: user cannot chat")
|
|
|
await websocket.close(code=4003)
|
|
await websocket.close(code=4003)
|
|
|
return
|
|
return
|
|
|
|
|
|
|
|
order = db.execute_query("SELECT user_id FROM orders WHERE id = %s", (order_id,))
|
|
order = db.execute_query("SELECT user_id FROM orders WHERE id = %s", (order_id,))
|
|
|
if not order:
|
|
if not order:
|
|
|
|
|
+ print(f"DEBUG: Chat WS rejected: order #{order_id} not found")
|
|
|
await websocket.close(code=4004)
|
|
await websocket.close(code=4004)
|
|
|
return
|
|
return
|
|
|
if role != 'admin' and order[0]['user_id'] != user_id:
|
|
if role != 'admin' and order[0]['user_id'] != user_id:
|
|
|
|
|
+ print(f"DEBUG: Chat WS rejected: not authorized for this order")
|
|
|
await websocket.close(code=4003)
|
|
await websocket.close(code=4003)
|
|
|
return
|
|
return
|
|
|
|
|
|