v0.8.6测试
This commit is contained in:
@@ -435,4 +435,42 @@ async def delete_admin(request: Request, user_id: int):
|
||||
)
|
||||
return success_response(message="管理员删除成功")
|
||||
else:
|
||||
return error_response(message="删除失败或管理员不存在")
|
||||
return error_response(message="删除失败或管理员不存在")
|
||||
|
||||
|
||||
@router.post("/reset-password/{user_id}")
|
||||
async def reset_admin_password(request: Request, user_id: int):
|
||||
"""重置管理员密码(班主任)"""
|
||||
user = await get_current_user(request)
|
||||
is_teacher = await PermissionChecker.check_is_teacher(user["user_id"])
|
||||
if not is_teacher:
|
||||
return error_response(message="仅班主任可重置密码", code=403)
|
||||
|
||||
from models.user import UserModel
|
||||
from utils.security import SecurityUtils
|
||||
|
||||
# 获取管理员信息
|
||||
target_user = await UserModel.get_by_user_id(user_id)
|
||||
if not target_user:
|
||||
return error_response(message="管理员不存在", code=404)
|
||||
|
||||
if target_user["user_type"] != "admin":
|
||||
return error_response(message="只能重置管理员密码", code=400)
|
||||
|
||||
# 生成新密码
|
||||
new_password = SecurityUtils.generate_random_password(8)
|
||||
password_hash = SecurityUtils.sha1_md5_password(new_password)
|
||||
|
||||
# 更新密码
|
||||
updated = await UserModel.update_password(user_id, password_hash)
|
||||
if updated:
|
||||
await LogService.write_operation_log(
|
||||
operator_id=user["user_id"], operator_name=user["username"],
|
||||
operator_role="班主任", operation_type="reset_password",
|
||||
target_type="admin", target_id=user_id,
|
||||
details=f"重置管理员密码: {target_user['real_name']}({target_user['username']})",
|
||||
ip=request.client.host
|
||||
)
|
||||
return success_response(data={"password": new_password}, message="密码重置成功")
|
||||
else:
|
||||
return error_response(message="密码重置失败")
|
||||
Reference in New Issue
Block a user