feat: remove old password requirement, fix user info display, and add password change reminder on home page
This commit is contained in:
@ -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()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user