Spaces:
Running
Running
Download resolver.py from yoursdvniel/SmartInc-API: direct link, hf CLI and curl.
- Browser
- Download file 1.36 kB
-
https://huggingface.co/spaces/yoursdvniel/SmartInc-API/resolve/main/resolver.py
- Command line
-
hf download hf://spaces/yoursdvniel/SmartInc-API/resolver.py
-
curl -L -o resolver.py https://huggingface.co/spaces/yoursdvniel/SmartInc-API/resolve/main/resolver.py
1.36 kB
| # resolver.py | |
| from firestore_client import get_firestore_client | |
| from google.cloud import firestore | |
| db = get_firestore_client() | |
| def resolve_user_context(uid: str, company_code: str): | |
| """ | |
| Returns: {"uid", "email", "participantId"} — participantId may be None if not found. | |
| """ | |
| email = None | |
| participant_id = None | |
| # 1) users/{uid} -> email | |
| user_snap = db.collection("users").document(uid).get() | |
| if user_snap.exists: | |
| user = user_snap.to_dict() or {} | |
| email = user.get("email") | |
| # 2) applications where companyCode == ctx AND email == user.email -> participantId | |
| if email: | |
| app_query = ( | |
| db.collection("applications") | |
| .where(filter=firestore.FieldFilter("companyCode", "==", company_code)) | |
| .where(filter=firestore.FieldFilter("email", "==", email)) | |
| .limit(1) | |
| ) | |
| app_docs = list(app_query.stream()) | |
| if app_docs: | |
| participant_id = (app_docs[0].to_dict() or {}).get("participantId") | |
| # 3) Verify the participant doc exists, but do NOT filter by companyCode on participants. | |
| if participant_id: | |
| p_snap = db.collection("participants").document(participant_id).get() | |
| if not p_snap.exists: | |
| participant_id = None | |
| return {"uid": uid, "email": email, "participantId": participant_id} | |