39 lines
1.3 KiB
Python
39 lines
1.3 KiB
Python
|
|
from firebase_init import db
|
|
from firebase_admin import auth as fb_auth
|
|
|
|
def get_user_profile(uid: str):
|
|
"""Fetch user's Firestore profile: users/{uid} => { enabled, case_email, is_admin, user_email }"""
|
|
doc_ref = db.collection("users").document(uid)
|
|
snap = doc_ref.get()
|
|
if not snap.exists:
|
|
# bootstrap a placeholder doc so admins can fill it in
|
|
# Get user email from Firebase Auth
|
|
try:
|
|
user = fb_auth.get_user(uid)
|
|
user_email = user.email
|
|
except Exception:
|
|
user_email = None
|
|
|
|
doc_ref.set({
|
|
"enabled": False,
|
|
"is_admin": False,
|
|
"user_email": user_email,
|
|
"case_email": user_email,
|
|
"case_domain_email": ""
|
|
}, merge=True)
|
|
return {
|
|
"enabled": False,
|
|
"is_admin": False,
|
|
"user_email": user_email,
|
|
"case_email": user_email,
|
|
"case_domain_email": ""
|
|
}
|
|
data = snap.to_dict() or {}
|
|
return {
|
|
"enabled": bool(data.get("enabled", False)),
|
|
"is_admin": bool(data.get("is_admin", False)),
|
|
"user_email": data.get("user_email"),
|
|
"case_email": data.get("case_email"),
|
|
"case_domain_email": data.get("case_domain_email", "")
|
|
} |