diff --git a/video-gen-api/app/api/v1/auth.py b/video-gen-api/app/api/v1/auth.py index 0a16d8cb..cbee25c5 100644 --- a/video-gen-api/app/api/v1/auth.py +++ b/video-gen-api/app/api/v1/auth.py @@ -15,6 +15,7 @@ from app.models.system_config import SystemConfig from app.models.user import User from app.schemas.auth import ( ChangePasswordRequest, + ChangeUsernameRequest, LoginRequest, RegisterRequest, SetPasswordRequest, @@ -323,6 +324,17 @@ async def change_password( return {"message": "密码修改成功"} +@router.post("/change-username") +async def change_username( + req: ChangeUsernameRequest, + current_user: User = Depends(get_current_user), + db: AsyncSession = Depends(get_db), +): + current_user.username = req.new_username.strip() + await db.flush() + return {"message": "用户名修改成功"} + + @router.get("/site-info") async def get_site_info(db: AsyncSession = Depends(get_db)): """Public endpoint returning site name, logo, agreement and copyright info.""" diff --git a/video-gen-api/app/schemas/auth.py b/video-gen-api/app/schemas/auth.py index 1187765c..e1e729b3 100644 --- a/video-gen-api/app/schemas/auth.py +++ b/video-gen-api/app/schemas/auth.py @@ -28,6 +28,10 @@ class ChangePasswordRequest(BaseModel): new_password: str = Field(..., min_length=6, description="新密码,至少6位") +class ChangeUsernameRequest(BaseModel): + new_username: str = Field(..., min_length=1, max_length=10, description="新用户名,1-10位") + + class TokenResponse(BaseModel): access_token: str token_type: str = "bearer"