Fix route order for POST /api/admin/users endpoint

Move POST /api/admin/users before PUT /api/admin/users/{email}
to fix "Method Not Allowed" error when creating users.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
michael 2025-12-05 07:24:58 -06:00
parent 48db28b8fb
commit 1d53c33d07

44
main.py
View file

@ -945,28 +945,6 @@ async def get_all_users(current_user: dict = Depends(require_admin)):
) for user in users
]
@app.put("/api/admin/users/{email}", response_model=models.UserResponse)
async def update_user(email: str, user_update: models.UserUpdate, current_user: dict = Depends(require_admin)):
# Get the user by email first
existing_user = await crud.get_user_by_email(email)
if not existing_user:
raise HTTPException(status_code=404, detail="User not found")
# Update the user
update_data = user_update.model_dump(exclude_unset=True)
updated_user = await crud.update_user(str(existing_user["_id"]), update_data)
if not updated_user:
raise HTTPException(status_code=500, detail="Failed to update user")
return models.UserResponse(
email=updated_user["email"],
full_name=updated_user.get("full_name"),
is_active=updated_user["is_active"],
is_admin=updated_user["is_admin"],
auth_provider=updated_user.get("auth_provider", "local")
)
@app.post("/api/admin/users", response_model=models.UserResponse)
async def admin_create_user(
user_data: models.AdminUserCreate,
@ -990,6 +968,28 @@ async def admin_create_user(
except ValueError as e:
raise HTTPException(status_code=400, detail=str(e))
@app.put("/api/admin/users/{email}", response_model=models.UserResponse)
async def update_user(email: str, user_update: models.UserUpdate, current_user: dict = Depends(require_admin)):
# Get the user by email first
existing_user = await crud.get_user_by_email(email)
if not existing_user:
raise HTTPException(status_code=404, detail="User not found")
# Update the user
update_data = user_update.model_dump(exclude_unset=True)
updated_user = await crud.update_user(str(existing_user["_id"]), update_data)
if not updated_user:
raise HTTPException(status_code=500, detail="Failed to update user")
return models.UserResponse(
email=updated_user["email"],
full_name=updated_user.get("full_name"),
is_active=updated_user["is_active"],
is_admin=updated_user["is_admin"],
auth_provider=updated_user.get("auth_provider", "local")
)
@app.post("/api/admin/users/{email}/reset-password")
async def admin_reset_password(
email: str,