diff --git a/oidc-controller/api/routers/acapy_handler.py b/oidc-controller/api/routers/acapy_handler.py index ea3379b0..d5cc20b7 100644 --- a/oidc-controller/api/routers/acapy_handler.py +++ b/oidc-controller/api/routers/acapy_handler.py @@ -43,6 +43,7 @@ async def post_topic(request: Request, topic: str, db: Database = Depends(get_db pid = str(auth_session.id) connections = connections_reload() sid = connections.get(pid) + logger.debug(f"sid: {sid} found for pid: {pid}") if webhook_body["state"] == "presentation_received": logger.info("GOT A PRESENTATION, TIME TO VERIFY") @@ -53,10 +54,12 @@ async def post_topic(request: Request, topic: str, db: Database = Depends(get_db logger.info("VERIFIED") if webhook_body["verified"] == "true": auth_session.proof_status = AuthSessionState.VERIFIED - await sio.emit("status", {"status": "verified"}, to=sid) + if sid: + await sio.emit("status", {"status": "verified"}, to=sid) else: auth_session.proof_status = AuthSessionState.FAILED - await sio.emit("status", {"status": "failed"}, to=sid) + if sid: + await sio.emit("status", {"status": "failed"}, to=sid) await AuthSessionCRUD(db).patch( str(auth_session.id), AuthSessionPatch(**auth_session.dict()) @@ -67,7 +70,9 @@ async def post_topic(request: Request, topic: str, db: Database = Depends(get_db logger.info("ABANDONED") logger.info(webhook_body["error_msg"]) auth_session.proof_status = AuthSessionState.ABANDONED - await sio.emit("status", {"status": "abandoned"}, to=sid) + if sid: + await sio.emit("status", {"status": "abandoned"}, to=sid) + await AuthSessionCRUD(db).patch( str(auth_session.id), AuthSessionPatch(**auth_session.dict()) ) @@ -91,7 +96,9 @@ async def post_topic(request: Request, topic: str, db: Database = Depends(get_db ): logger.info("EXPIRED") auth_session.proof_status = AuthSessionState.EXPIRED - await sio.emit("status", {"status": "expired"}, to=sid) + if sid: + await sio.emit("status", {"status": "expired"}, to=sid) + await AuthSessionCRUD(db).patch( str(auth_session.id), AuthSessionPatch(**auth_session.dict()) ) diff --git a/oidc-controller/api/routers/oidc.py b/oidc-controller/api/routers/oidc.py index e60fe193..dd7a6276 100644 --- a/oidc-controller/api/routers/oidc.py +++ b/oidc-controller/api/routers/oidc.py @@ -72,7 +72,8 @@ async def poll_pres_exch_complete(pid: str, db: Database = Depends(get_db)): str(auth_session.id), AuthSessionPatch(**auth_session.dict()) ) # Send message through the websocket. - await sio.emit("status", {"status": "expired"}, to=sid) + if sid: + await sio.emit("status", {"status": "expired"}, to=sid) return {"proof_status": auth_session.proof_status} diff --git a/oidc-controller/api/routers/presentation_request.py b/oidc-controller/api/routers/presentation_request.py index 801fbb6c..44a80b90 100644 --- a/oidc-controller/api/routers/presentation_request.py +++ b/oidc-controller/api/routers/presentation_request.py @@ -51,7 +51,8 @@ async def send_connectionless_proof_req( if auth_session.proof_status is AuthSessionState.NOT_STARTED: auth_session.proof_status = AuthSessionState.PENDING await AuthSessionCRUD(db).patch(auth_session.id, auth_session) - await sio.emit("status", {"status": "pending"}, to=sid) + if sid: + await sio.emit("status", {"status": "pending"}, to=sid) msg = auth_session.presentation_request_msg