feat/change-password
main
新增用户菜单「修改密码」入口:\n\n- server:POST /api/auth/change-password(@Authenticated + 节流),登录态即本人凭证,免原密码直接更新 password_hash;账号归档抛 403 避免前端 401 误登出;成功/失败均写审计日志;MaxByteLength 装饰器抽为公共实现供 rbac/auth 复用。\n- admin:MainLayout 用户菜单新增「修改密码」,ChangePasswordModal 仅新密码+确认,沿用共享 PASSWORD_RULES(字节上限/最小长度/无空格);防重复提交。\n\n验证:server auth spec 6/6、两端 typecheck/lint 通过;本地 dev 真机浏览器全流程实测(校验、改密成功、旧密码失效、审计落库、双击防重)。\n\n无数据库迁移,不影响生产库。
提交已通过 rebase 合入 main(分支无分叉,main 已包含本 PR 全部 3 个提交),PR 记录卡在 open,现手动关闭清理。
No dependencies set.
The note is not visible to the blocked user.
新增用户菜单「修改密码」入口:\n\n- server:POST /api/auth/change-password(@Authenticated + 节流),登录态即本人凭证,免原密码直接更新 password_hash;账号归档抛 403 避免前端 401 误登出;成功/失败均写审计日志;MaxByteLength 装饰器抽为公共实现供 rbac/auth 复用。\n- admin:MainLayout 用户菜单新增「修改密码」,ChangePasswordModal 仅新密码+确认,沿用共享 PASSWORD_RULES(字节上限/最小长度/无空格);防重复提交。\n\n验证:server auth spec 6/6、两端 typecheck/lint 通过;本地 dev 真机浏览器全流程实测(校验、改密成功、旧密码失效、审计落库、双击防重)。\n\n无数据库迁移,不影响生产库。
提交已通过 rebase 合入 main(分支无分叉,main 已包含本 PR 全部 3 个提交),PR 记录卡在 open,现手动关闭清理。
Pull request closed