age-better-curd / services /users_service.py
Abineshkumar
Add application file
c31e237
from fastapi import HTTPException
from config import db, auth
def create_user_in_firestore(user_data):
try:
# Create user in Firebase Authentication
user = auth.create_user(
email=user_data["email"],
password=user_data["password"],
display_name=f"{user_data['name']} {user_data['surname']}"
)
# Store user data in Firestore with Firebase UID
user_ref = db.collection("users").document(user.uid)
user_ref.set({
"uid": user.uid, # Store Firebase UID in Firestore
"name": user_data["name"],
"surname": user_data["surname"],
"email": user_data["email"],
"phone": user_data["phone"],
"role": user_data["role"],
"status": "Active"
})
return {"isSuccess": True, "message": "User created successfully", "uid": user.uid}
except Exception as e:
raise HTTPException(status_code=400, detail=str(e))
def get_user_from_firestore(user_id: str):
try:
# Use Firebase UID instead of UUID
user_ref = db.collection("users").document(user_id)
user_snapshot = user_ref.get()
if user_snapshot.exists:
return {"isSuccess": True, "data": user_snapshot.to_dict()}
else:
raise HTTPException(status_code=404, detail="User not found")
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
def update_user_in_firestore(user_id: str, update_data):
try:
# Use Firebase UID instead of UUID
user_ref = db.collection("users").document(user_id)
user_ref.update(update_data)
# Optionally update user data in Firebase Auth (e.g., email, password)
if 'email' in update_data:
auth.update_user(user_id, email=update_data['email'])
if 'password' in update_data:
auth.update_user(user_id, password=update_data['password'])
return {"isSuccess": True, "message": "User updated successfully"}
except Exception as e:
raise HTTPException(status_code=400, detail=str(e))
def delete_user_from_firestore(user_id: str):
try:
# Delete user from Firestore using Firebase UID
user_ref = db.collection("users").document(user_id)
user_ref.delete()
# Delete user from Firebase Auth
auth.delete_user(user_id)
return {"isSuccess": True, "message": "User deleted successfully"}
except Exception as e:
raise HTTPException(status_code=400, detail=str(e))