engine: Simplify multiple chains processing #86

Merged
fyrchik merged 1 commit from fyrchik/policy-engine:refactor-rulefound into master 2024-08-19 07:35:16 +00:00

View file

@ -42,41 +42,36 @@ func (dr *defaultChainRouter) checkLocal(name chain.Name, rt RequestTarget, r re
if dr.local == nil {
return
}
var ruleFounds []bool
var hasAllow bool
for _, target := range rt.Targets() {
status, ruleFound, err = dr.matchLocalOverrides(name, target, r)
if err != nil || ruleFound && status != chain.Allow {
return
}
ruleFounds = append(ruleFounds, ruleFound)
hasAllow = hasAllow || ruleFound
}
status = chain.NoRuleFound
for _, ruleFound = range ruleFounds {
if ruleFound {
if hasAllow {
status = chain.Allow
break
}
}
return
}
func (dr *defaultChainRouter) checkMorph(name chain.Name, rt RequestTarget, r resource.Request) (status chain.Status, ruleFound bool, err error) {
var ruleFounds []bool
var hasAllow bool
for _, target := range rt.Targets() {
status, ruleFound, err = dr.matchMorphRuleChains(name, target, r)
if err != nil || ruleFound && status != chain.Allow {
return
}
ruleFounds = append(ruleFounds, ruleFound)
hasAllow = hasAllow || ruleFound
}
status = chain.NoRuleFound
for _, ruleFound = range ruleFounds {
if ruleFound {
if hasAllow {
status = chain.Allow
break
}
}
return
}