From cd600f9fc2177f77d294f93d15f7158a2a3939e7 Mon Sep 17 00:00:00 2001 From: yueli Date: Wed, 9 Sep 2026 15:23:51 +0800 Subject: [PATCH] =?UTF-8?q?fix(auth):=20=E5=AE=A1=E6=89=B9=E4=BA=BA?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E6=8C=89=E5=85=AC=E5=8F=B8=E6=94=B6=E7=AA=84?= =?UTF-8?q?=E2=80=94=E2=80=94=E6=9C=AC=E5=85=AC=E5=8F=B8=E4=B8=BB=E7=AE=A1?= =?UTF-8?q?=20+=20=E6=89=80=E6=9C=89=E8=B6=85=E7=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - get_approvers:普通/主管仅见 department=本人公司 的 SUPERVISOR 与全部 SUPER_ADMIN;超管本人不受限 --- inventory-backend/app/api/v1/auth.py | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/inventory-backend/app/api/v1/auth.py b/inventory-backend/app/api/v1/auth.py index 075b7de..b5cdca1 100644 --- a/inventory-backend/app/api/v1/auth.py +++ b/inventory-backend/app/api/v1/auth.py @@ -339,11 +339,25 @@ def get_approvers(): from app.models.system import SysUser current_user_id = get_jwt_identity() + me = SysUser.query.get(current_user_id) if current_user_id else None - users = SysUser.query.filter( - SysUser.role.in_(['SUPER_ADMIN', 'SUPERVISOR']), - SysUser.status == 'active' - ).all() + from sqlalchemy import and_, or_ + if me and (me.role or '').upper() == 'SUPER_ADMIN': + # 超管本人:不受部门限制,仍列出全部主管+超管 + users = SysUser.query.filter( + SysUser.role.in_(['SUPER_ADMIN', 'SUPERVISOR']), + SysUser.status == 'active' + ).all() + else: + # 普通/主管:只列“本公司(department)主管” + “所有超管” + my_company = me.department if me else None + users = SysUser.query.filter( + SysUser.status == 'active', + or_( + SysUser.role == 'SUPER_ADMIN', + and_(SysUser.role == 'SUPERVISOR', SysUser.department == my_company) + ) + ).all() return jsonify({ 'msg': '获取成功',