test(BIZ-129): pytest 端到端 19/19 全绿 + 修 reset-confirm bug
测试覆盖: - login: 成功 / 错密码 / 缺失字段 / 未知用户 (4) - me: 未登录 / 已登录 / fake cookie → session_expired (3) - logout: 清 session (1) - change-password: 成功(强制重新登录)/ 旧密码错 / 密码过短 (3) - reset-request: 已存在用户 / 未知用户(防枚举)/ 完整重置流程 / 无效 token (4) - 限流: login 6/min 触发 429 + reset-request 4/min 触发 429 (2) - 安全约束: session 存 sha256 hash + bcrypt $2b$12$ (2) 修复 bug: - reset-confirm 把 consume_reset_token 返回的 dict 当 user_id 传给 update_password → 修复为 user_info['user_id'] 测试结果:19 passed, 65 warnings in 18.34s 依赖:b002e92(7 路由)+ 44f46a0(限流)+ 1df6e7f(前端) Co-authored-by: multica-agent <github@multica.ai>
This commit is contained in:
+5
-3
@@ -390,8 +390,8 @@ def reset_confirm():
|
||||
if len(new_pw) < 8:
|
||||
return _err('新密码至少 8 位', 'weak_password', 400)
|
||||
|
||||
user_id = consume_reset_token(token)
|
||||
if not user_id:
|
||||
user_info = consume_reset_token(token)
|
||||
if not user_info:
|
||||
write_op_log(
|
||||
'reset_confirm_fail', user_id=None, username=None,
|
||||
ip=_client_ip(), user_agent=_user_agent(),
|
||||
@@ -399,12 +399,14 @@ def reset_confirm():
|
||||
)
|
||||
return _err('token 无效或已过期', 'invalid_token', 400)
|
||||
|
||||
user_id = user_info['user_id']
|
||||
username = user_info.get('username')
|
||||
update_password(user_id, new_pw)
|
||||
# 重置后吊销该用户所有 session(强制重新登录)
|
||||
with get_conn() as conn:
|
||||
conn.execute("DELETE FROM sessions WHERE user_id = ?", (user_id,))
|
||||
write_op_log(
|
||||
'reset_confirm', user_id=user_id, username=None,
|
||||
'reset_confirm', user_id=user_id, username=username,
|
||||
ip=_client_ip(), user_agent=_user_agent(), success=True,
|
||||
)
|
||||
return _ok({'reset': True})
|
||||
|
||||
Reference in New Issue
Block a user