fix: get_data_tmpl 注入 logined 过滤条件到 data_filter

- 确保 logined_userorgid 和 logined_userid 始终作为过滤条件
- 统一 filterjson 为 AND 结构后追加
- 解决有 data_filter 时 ownerid/userid 隔离失效的问题
This commit is contained in:
yumoqing 2026-06-02 17:27:05 +08:00
parent 529025a5f4
commit ebd4b4a99e

View File

@ -159,6 +159,20 @@ ori_fields = json.loads(fields_str)
if not filterjson: if not filterjson:
fields = [ f['name'] for f in ori_fields ] fields = [ f['name'] for f in ori_fields ]
filterjson = default_filterjson(fields, ns) filterjson = default_filterjson(fields, ns)
{% if logined_userorgid or logined_userid %}
# 确保 logined 过滤条件始终生效
if filterjson:
if not isinstance(filterjson, dict) or 'AND' not in filterjson:
filterjson = {'AND': [filterjson] if filterjson else []}
{% if logined_userorgid %}
filterjson['AND'].append({'field': '{{logined_userorgid}}', 'op': '=', 'var': '__logined_orgid__'})
ns['__logined_orgid__'] = userorgid
{% endif %}
{% if logined_userid %}
filterjson['AND'].append({'field': '{{logined_userid}}', 'op': '=', 'var': '__logined_uid__'})
ns['__logined_uid__'] = userid
{% endif %}
{% endif %}
filterdic = ns.copy() filterdic = ns.copy()
filterdic['filterstr'] = '' filterdic['filterstr'] = ''
filterdic['userorgid'] = '${userorgid}$' filterdic['userorgid'] = '${userorgid}$'