25 lines
1.4 KiB
Transact-SQL
25 lines
1.4 KiB
Transact-SQL
/* ============================================================================
|
|
s_module 增加 b_scope_field(数据范围字段)
|
|
----------------------------------------------------------------------------
|
|
数据范围按"记录归属人"判:这个字段就是区分数据是谁创建的(如 b_inputuser_id、
|
|
b_applyuser_id)。权限引擎据此拼条件:
|
|
self → 字段 = 当前用户编码
|
|
dept → 由当前用户反查部门,字段 ∈ 该部门的用户集合
|
|
dept_tree → 同上,"本部门及下级"取部门子树
|
|
字段配在模块上而不是配在用户授权行(s_user_data_power.b_scope_field)上:
|
|
同一个模块的所有用户必须用同一字段判范围,否则同一份数据对不同用户含义不同,
|
|
也没法解释"为什么这个用户看得到、那个看不到"。授权行上的同名列不再参与判定
|
|
(权限引擎只读本列),用户授权界面写入时统一清空它。
|
|
历史行保持 NULL:NULL = 该模块不按字段判范围,权限引擎遇到 self / dept /
|
|
dept_tree 规则时会明确报"未配置判断字段",不静默放行。
|
|
============================================================================ */
|
|
|
|
if not exists (
|
|
select 1
|
|
from sys.columns
|
|
where object_id = object_id('dbo.s_module')
|
|
and name = 'b_scope_field'
|
|
)
|
|
alter table dbo.s_module add b_scope_field varchar(50) null;
|
|
GO
|