diff --git a/backend/routes/admin.py b/backend/routes/admin.py index 56e863d..a66785a 100644 --- a/backend/routes/admin.py +++ b/backend/routes/admin.py @@ -27,7 +27,7 @@ from schemas.admin import ( AddPointsRequest, RevokeRequest, AddAdminRequest, AddStudentRequest, UpdateHomeworkStatusRequest, AddAttendanceRequest, - UpdateAdminRequest, DeleteAdminRequest + UpdateAdminRequest, DeleteAdminRequest, ResetPasswordRequest ) from utils.response import success_response, error_response from utils.logger import get_logger @@ -439,7 +439,7 @@ async def delete_admin(request: Request, user_id: int): @router.post("/reset-password/{user_id}") -async def reset_admin_password(request: Request, user_id: int): +async def reset_admin_password(request: Request, user_id: int, req: ResetPasswordRequest): """重置管理员密码(班主任)""" user = await get_current_user(request) is_teacher = await PermissionChecker.check_is_teacher(user["user_id"]) @@ -457,8 +457,8 @@ async def reset_admin_password(request: Request, user_id: int): if target_user["user_type"] != "admin": return error_response(message="只能重置管理员密码", code=400) - # 生成新密码 - new_password = SecurityUtils.generate_random_password(8) + # 使用传入的新密码 + new_password = req.new_password password_hash = SecurityUtils.sha1_md5_password(new_password) # 更新密码 @@ -471,6 +471,6 @@ async def reset_admin_password(request: Request, user_id: int): details=f"重置管理员密码: {target_user['real_name']}({target_user['username']})", ip=request.client.host ) - return success_response(data={"password": new_password}, message="密码重置成功") + return success_response(message="密码重置成功") else: return error_response(message="密码重置失败") \ No newline at end of file diff --git a/backend/schemas/admin.py b/backend/schemas/admin.py index 3505f6e..9faff5e 100644 --- a/backend/schemas/admin.py +++ b/backend/schemas/admin.py @@ -97,4 +97,9 @@ class UpdateAdminRequest(BaseModel): class DeleteAdminRequest(BaseModel): """删除管理员请求""" - user_id: int = Field(..., description="用户ID") \ No newline at end of file + user_id: int = Field(..., description="用户ID") + + +class ResetPasswordRequest(BaseModel): + """重置密码请求""" + new_password: str = Field(..., min_length=6, max_length=50, description="新密码") \ No newline at end of file diff --git a/frontend/admin/admins.php b/frontend/admin/admins.php index dd16968..88a1c06 100644 --- a/frontend/admin/admins.php +++ b/frontend/admin/admins.php @@ -121,8 +121,35 @@ include __DIR__ . '/../includes/header.php'; + +