fix(borrow,outbound): 记录查看按角色收窄——普通只看自己,库管/主管/超管/跨域看全部

- decorators 新增 is_privileged_viewer(SUPER_ADMIN/SUPERVISOR/WAREHOUSE_MGR 或 crossDomain)
- 借库记录列表:非管理者强制 applicant_id=当前用户
- 出库记录列表+详情:非管理者强制只看自己/无权访问他人单(403)
This commit is contained in:
yueli
2026-09-09 09:31:01 +08:00
parent 578c15dc95
commit 9622baf76e
3 changed files with 39 additions and 2 deletions

View File

@ -226,6 +226,27 @@ def _has_cross_domain_permission(user_role, user_company=''):
return False
# 能查看“他人借还/出库记录”的管理者角色(库管/主管/超管)。普通申请人只能看自己的记录。
PRIVILEGED_VIEWER_ROLES = ('SUPER_ADMIN', 'SUPERVISOR', 'WAREHOUSE_MGR')
def is_privileged_viewer():
"""
判断当前登录用户是否属于“管理者视角”(可查看他人借还/出库记录)。
规则:角色为 SUPER_ADMIN/SUPERVISOR/WAREHOUSE_MGR或拥有 crossDomain 权限。
普通申请人(其余角色)只能看自己的记录(由各列表 handler 强制 applicant_id=当前用户)。
"""
from flask_jwt_extended import get_jwt
claims = get_jwt()
role = (claims.get('role') or '').upper()
if role in PRIVILEGED_VIEWER_ROLES:
return True
user_company = claims.get('company_name', '')
if _has_cross_domain_permission(role, user_company):
return True
return False
def get_current_company_filter():
"""
多租户数据权限隔离工具函数。