Spaces:
Sleeping
Sleeping
Update api/routes/auth.py
Browse files- api/routes/auth.py +17 -6
api/routes/auth.py
CHANGED
|
@@ -34,7 +34,8 @@ async def signup(data: SignupForm):
|
|
| 34 |
"password": hashed_pw,
|
| 35 |
"role": "patient",
|
| 36 |
"created_at": datetime.utcnow().isoformat(),
|
| 37 |
-
"updated_at": datetime.utcnow().isoformat()
|
|
|
|
| 38 |
}
|
| 39 |
|
| 40 |
try:
|
|
@@ -83,7 +84,8 @@ async def create_doctor(
|
|
| 83 |
"specialty": data.specialty,
|
| 84 |
"license_number": data.license_number,
|
| 85 |
"created_at": datetime.utcnow().isoformat(),
|
| 86 |
-
"updated_at": datetime.utcnow().isoformat()
|
|
|
|
| 87 |
}
|
| 88 |
|
| 89 |
try:
|
|
@@ -113,6 +115,14 @@ async def login(form_data: OAuth2PasswordRequestForm = Depends()):
|
|
| 113 |
headers={"WWW-Authenticate": "Bearer"},
|
| 114 |
)
|
| 115 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 116 |
access_token = create_access_token(data={"sub": user["email"]})
|
| 117 |
logger.info(f"Successful login for {form_data.username}")
|
| 118 |
return {
|
|
@@ -123,7 +133,7 @@ async def login(form_data: OAuth2PasswordRequestForm = Depends()):
|
|
| 123 |
|
| 124 |
@router.get("/me")
|
| 125 |
async def get_me(request: Request, current_user: dict = Depends(get_current_user)):
|
| 126 |
-
logger.info(f"Fetching user profile for {current_user['email']}")
|
| 127 |
print(f"Headers: {request.headers}")
|
| 128 |
try:
|
| 129 |
user = await users_collection.find_one({"email": current_user["email"]})
|
|
@@ -141,12 +151,13 @@ async def get_me(request: Request, current_user: dict = Depends(get_current_user
|
|
| 141 |
"role": user.get("role", "patient"),
|
| 142 |
"specialty": user.get("specialty"),
|
| 143 |
"created_at": user.get("created_at"),
|
| 144 |
-
"updated_at": user.get("updated_at")
|
|
|
|
| 145 |
}
|
| 146 |
-
logger.info(f"User profile retrieved for {current_user['email']}")
|
| 147 |
return response
|
| 148 |
except Exception as e:
|
| 149 |
-
logger.error(f"Database error for user {current_user['email']}: {str(e)}")
|
| 150 |
raise HTTPException(
|
| 151 |
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
|
| 152 |
detail=f"Database error: {str(e)}"
|
|
|
|
| 34 |
"password": hashed_pw,
|
| 35 |
"role": "patient",
|
| 36 |
"created_at": datetime.utcnow().isoformat(),
|
| 37 |
+
"updated_at": datetime.utcnow().isoformat(),
|
| 38 |
+
"device_token": data.device_token or "" # Store device token if provided
|
| 39 |
}
|
| 40 |
|
| 41 |
try:
|
|
|
|
| 84 |
"specialty": data.specialty,
|
| 85 |
"license_number": data.license_number,
|
| 86 |
"created_at": datetime.utcnow().isoformat(),
|
| 87 |
+
"updated_at": datetime.utcnow().isoformat(),
|
| 88 |
+
"device_token": data.device_token or "" # Store device token if provided
|
| 89 |
}
|
| 90 |
|
| 91 |
try:
|
|
|
|
| 115 |
headers={"WWW-Authenticate": "Bearer"},
|
| 116 |
)
|
| 117 |
|
| 118 |
+
# Update device token if provided in form_data (e.g., from frontend)
|
| 119 |
+
if hasattr(form_data, 'device_token') and form_data.device_token:
|
| 120 |
+
await users_collection.update_one(
|
| 121 |
+
{"email": user["email"]},
|
| 122 |
+
{"$set": {"device_token": form_data.device_token}}
|
| 123 |
+
)
|
| 124 |
+
logger.info(f"Device token updated for {form_data.username}")
|
| 125 |
+
|
| 126 |
access_token = create_access_token(data={"sub": user["email"]})
|
| 127 |
logger.info(f"Successful login for {form_data.username}")
|
| 128 |
return {
|
|
|
|
| 133 |
|
| 134 |
@router.get("/me")
|
| 135 |
async def get_me(request: Request, current_user: dict = Depends(get_current_user)):
|
| 136 |
+
logger.info(f"Fetching user profile for {current_user['email']} at {datetime.utcnow().isoformat()}")
|
| 137 |
print(f"Headers: {request.headers}")
|
| 138 |
try:
|
| 139 |
user = await users_collection.find_one({"email": current_user["email"]})
|
|
|
|
| 151 |
"role": user.get("role", "patient"),
|
| 152 |
"specialty": user.get("specialty"),
|
| 153 |
"created_at": user.get("created_at"),
|
| 154 |
+
"updated_at": user.get("updated_at"),
|
| 155 |
+
"device_token": user.get("device_token", "") # Include device token in response
|
| 156 |
}
|
| 157 |
+
logger.info(f"User profile retrieved for {current_user['email']} at {datetime.utcnow().isoformat()}")
|
| 158 |
return response
|
| 159 |
except Exception as e:
|
| 160 |
+
logger.error(f"Database error for user {current_user['email']}: {str(e)} at {datetime.utcnow().isoformat()}")
|
| 161 |
raise HTTPException(
|
| 162 |
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
|
| 163 |
detail=f"Database error: {str(e)}"
|