46 lines
1.4 KiB
Python
46 lines
1.4 KiB
Python
from fastapi import APIRouter, Depends, HTTPException
|
|
from core.auth import get_current_user_dummy
|
|
from core.database import fake_users_db
|
|
|
|
router = APIRouter()
|
|
|
|
@router.post("/users/update")
|
|
async def update_profile(
|
|
current_user: dict = Depends(get_current_user_dummy),
|
|
username: str = None,
|
|
email: str = None,
|
|
bio: str = None
|
|
):
|
|
"""Update user profile information"""
|
|
if current_user["username"] not in fake_users_db:
|
|
raise HTTPException(status_code=404, detail="User not found")
|
|
|
|
user_data = fake_users_db[current_user["username"]]
|
|
|
|
if username and username != current_user["username"]:
|
|
if username in fake_users_db:
|
|
raise HTTPException(status_code=400, detail="Username already taken")
|
|
fake_users_db[username] = user_data
|
|
del fake_users_db[current_user["username"]]
|
|
current_user["username"] = username
|
|
|
|
if email:
|
|
user_data["email"] = email
|
|
|
|
if bio:
|
|
user_data["bio"] = bio
|
|
|
|
return {
|
|
"message": "Profile updated successfully",
|
|
"user": {
|
|
"username": current_user["username"],
|
|
"email": user_data["email"],
|
|
"bio": user_data.get("bio", ""),
|
|
},
|
|
"metadata": {
|
|
"updated_fields": [
|
|
field for field in ["username", "email", "bio"]
|
|
if locals()[field] is not None
|
|
]
|
|
}
|
|
} |