fix(logs): 「所有人」策略组无法新建(被误判为已属于其他策略组)
现象:userIds:[0] 新建策略组时报
「用户 0 已属于此数据源的另一个策略组」HTTP 400
根因:validatePolicyGroup 的跨组冲突检查把 EveryoneUserID(0) 当真实用户,
只要已有任何一个「所有人」策略组(如内置默认策略),
再新建含 0 的组必然冲突。
修复:跨组冲突检查跳过 AnyoneUserID(0) —— 它是哨兵值不是真实用户,
允许多个策略组同时包含「所有人」。
验证:
POST /logs/policy-groups {userIds:[0]} → 200,id=2 正常创建
POST userIds:[0,2](混选) → 400「「所有人」不能与具体用户同时选择」
GET /logs/policy-groups → 默认策略(所有人 · default 命名空间)
镜像:lghost/lokistack:latest + v0.1 = sha256:3222a8716fdd
This commit is contained in:
1 parent
cf54be3f7d
commit
188d9460fe
1 file changed
+5
@@ -88,6 +88,11 @@ func validatePolicyGroup(db *repository.JsonDB, group models.LogPolicyGroup, exc
|
||||
return fmt.Errorf("此数据源已有同名策略组")
|
||||
}
|
||||
for _, id := range other.UserIDs {
|
||||
// AnyoneUserID(0) 是「所有人」哨兵,不是真实用户,
|
||||
// 允许多个策略组同时包含它(否则新建任何「所有人」策略组都会被这条冲突检查拒掉)
|
||||
if id == AnyoneUserID {
|
||||
continue
|
||||
}
|
||||
if seen[id] {
|
||||
return fmt.Errorf("用户 %d 已属于此数据源的另一个策略组", id)
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user