feat: remove old password requirement, fix user info display, and add password change reminder on home page

This commit is contained in:
DXC
2026-03-23 11:52:30 +08:00
parent ec5331ffb3
commit 719fe108ba
4 changed files with 52 additions and 51 deletions

View File

@ -255,8 +255,9 @@ def get_my_permissions():
@jwt_required()
def change_my_password():
"""
新增】自我修改密码接口
- 无需管理员权限,只需验证 JWT Token 和旧密码是否正确
改造】自我修改密码接口
- 无需管理员权限,无需旧密码
- 只要 JWT Token 有效(已证明当前登录身份),即可直接修改新密码
- 字段脱敏:不暴露系统角色
"""
try:
@ -269,12 +270,11 @@ def change_my_password():
if not data:
return jsonify({'msg': '无效的请求数据'}), 400
old_password = data.get('old_password')
new_password = data.get('new_password')
confirm_password = data.get('confirm_password')
if not old_password or not new_password or not confirm_password:
return jsonify({'msg': '旧密码、新密码确认新密码均不能为空'}), 400
if not new_password or not confirm_password:
return jsonify({'msg': '新密码确认新密码均不能为空'}), 400
if new_password != confirm_password:
return jsonify({'msg': '新密码与确认密码不一致'}), 400
@ -282,22 +282,15 @@ def change_my_password():
if len(new_password) < 6:
return jsonify({'msg': '新密码长度不能少于6位'}), 400
# 超级管理员user_id=0使用硬编码密码
# 超级管理员user_id=0使用硬编码密码,不存入数据库
if user_id == 0:
if old_password != AuthService.SUPER_ADMIN_PASS:
return jsonify({'msg': '旧密码错误'}), 401
# 超级管理员密码不存入数据库直接返回成功IRIS 使用固定密码)
# 注:如果需要支持 IRIS 修改密码,可在此添加特殊逻辑
return jsonify({'msg': '超级管理员密码由系统管理员管理,当前会话无需修改'}), 200
return jsonify({'msg': '超级管理员密码由系统管理员管理,当前会话无法修改'}), 200
# 普通用户:从数据库验证旧密码
# 普通用户:JWT 已证明身份,直接更新新密码
user = SysUser.query.get(user_id)
if not user:
return jsonify({'msg': '用户不存在'}), 404
if not user.check_password(old_password):
return jsonify({'msg': '旧密码错误'}), 401
user.set_password(new_password)
db.session.commit()