重构: ResScope 改成 ResFlags 位标志,行级过滤与字段脱敏拆成独立开关
ResScope(Off/On/All 三选一)改成 ResFlags 位标志:ResRow/ResRowRelations 管行级权限过滤,ResMask/ResMaskRelations 管字段级脱敏,两个维度可以按位独立组合(*Relations 那两位只保留定义,还没接入判断逻辑)。WithRolesScope 改名 WithPermission(req.ResFlags),dataProcessor 里原来单一的 skipPermission 拆成 skipRowFilter/skipFieldMask 分别控制。
This commit is contained in:
+8
-8
@@ -6,9 +6,9 @@ type ResOptions struct {
|
||||
Tx *db.TxDatabase
|
||||
Alias string
|
||||
Silent bool
|
||||
// RolesScope 默认零值 ResScopeOff:不传 WithRolesScope,或显式传 ResScopeOff,都表示跳过
|
||||
// 权限过滤;只有显式传 ResScopeOn/ResScopeAll 才会按角色过滤。
|
||||
RolesScope ResScope
|
||||
// Permission 默认零值 0:不传 WithPermission 时,行级过滤和字段脱敏都跳过;显式传
|
||||
// ResRow/ResMask(或组合 ResAll)才会开启对应的检查,两者相互独立。
|
||||
Permission ResFlags
|
||||
}
|
||||
|
||||
type ResOption func(p *ResOptions)
|
||||
@@ -34,12 +34,12 @@ func WithSilent() ResOption {
|
||||
}
|
||||
}
|
||||
|
||||
// WithRolesScope 显式指定这次写/查操作的权限过滤范围。ResScopeOn/ResScopeAll 按角色过滤
|
||||
// (行级 WHERE 注入、字段级读脱敏、字段级写权限);ResScopeOff(或不调用这个 option)跳过
|
||||
// 权限过滤,变更通知、字段规范化、类型转换、默认值填充等不受影响。
|
||||
func WithRolesScope(s ResScope) ResOption {
|
||||
// WithPermission 显式指定这次写/查操作要开启哪些权限检查。ResRow 开启行级过滤(WHERE 注入),
|
||||
// ResMask 开启字段级脱敏(读脱敏、写权限),两者可以按位组合传,也可以只传一个;不调用这个 option
|
||||
// 时两者都跳过。变更通知、字段规范化、类型转换、默认值填充等不受这个 option 影响。
|
||||
func WithPermission(f ResFlags) ResOption {
|
||||
return func(p *ResOptions) {
|
||||
p.RolesScope = s
|
||||
p.Permission = f
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user