forked from TrueCloudLab/policy-engine
[#4] Reduce number of condition types
This commit is contained in:
parent
88cf807951
commit
31a308ea61
1 changed files with 25 additions and 35 deletions
60
chain.go
60
chain.go
|
@ -56,49 +56,31 @@ const (
|
|||
ObjectActor
|
||||
)
|
||||
|
||||
// TODO @fyrchik: replace string with int-like type.
|
||||
type ConditionType string
|
||||
type ConditionType byte
|
||||
|
||||
// TODO @fyrchik: reduce the number of conditions.
|
||||
// Everything from here should be expressable, but we do not need them all.
|
||||
// https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html
|
||||
const (
|
||||
// String condition operators.
|
||||
CondStringEquals ConditionType = "StringEquals"
|
||||
CondStringNotEquals ConditionType = "StringNotEquals"
|
||||
CondStringEqualsIgnoreCase ConditionType = "StringEqualsIgnoreCase"
|
||||
CondStringNotEqualsIgnoreCase ConditionType = "StringNotEqualsIgnoreCase"
|
||||
CondStringLike ConditionType = "StringLike"
|
||||
CondStringNotLike ConditionType = "StringNotLike"
|
||||
CondStringEquals ConditionType = iota
|
||||
CondStringNotEquals
|
||||
CondStringEqualsIgnoreCase
|
||||
CondStringNotEqualsIgnoreCase
|
||||
CondStringLike
|
||||
CondStringNotLike
|
||||
CondStringLessThan
|
||||
CondStringLessThanEquals
|
||||
CondStringGreaterThan
|
||||
CondStringGreaterThanEquals
|
||||
|
||||
// Numeric condition operators.
|
||||
CondNumericEquals ConditionType = "NumericEquals"
|
||||
CondNumericNotEquals ConditionType = "NumericNotEquals"
|
||||
CondNumericLessThan ConditionType = "NumericLessThan"
|
||||
CondNumericLessThanEquals ConditionType = "NumericLessThanEquals"
|
||||
CondNumericGreaterThan ConditionType = "NumericGreaterThan"
|
||||
CondNumericGreaterThanEquals ConditionType = "NumericGreaterThanEquals"
|
||||
|
||||
// Date condition operators.
|
||||
CondDateEquals ConditionType = "DateEquals"
|
||||
CondDateNotEquals ConditionType = "DateNotEquals"
|
||||
CondDateLessThan ConditionType = "DateLessThan"
|
||||
CondDateLessThanEquals ConditionType = "DateLessThanEquals"
|
||||
CondDateGreaterThan ConditionType = "DateGreaterThan"
|
||||
CondDateGreaterThanEquals ConditionType = "DateGreaterThanEquals"
|
||||
|
||||
// Bolean condition operators.
|
||||
CondBool ConditionType = "Bool"
|
||||
|
||||
// IP address condition operators.
|
||||
CondIPAddress ConditionType = "IpAddress"
|
||||
CondNotIPAddress ConditionType = "NotIpAddress"
|
||||
|
||||
// ARN condition operators.
|
||||
CondArnEquals ConditionType = "ArnEquals"
|
||||
CondArnLike ConditionType = "ArnLike"
|
||||
CondArnNotEquals ConditionType = "ArnNotEquals"
|
||||
CondArnNotLike ConditionType = "ArnNotLike"
|
||||
CondNumericEquals
|
||||
CondNumericNotEquals
|
||||
CondNumericLessThan
|
||||
CondNumericLessThanEquals
|
||||
CondNumericGreaterThan
|
||||
CondNumericGreaterThanEquals
|
||||
)
|
||||
|
||||
func (c *Condition) Match(req Request) bool {
|
||||
|
@ -127,6 +109,14 @@ func (c *Condition) Match(req Request) bool {
|
|||
return globMatch(val, c.Value)
|
||||
case CondStringNotLike:
|
||||
return !globMatch(val, c.Value)
|
||||
case CondStringLessThan:
|
||||
return val < c.Value
|
||||
case CondStringLessThanEquals:
|
||||
return val <= c.Value
|
||||
case CondStringGreaterThan:
|
||||
return val > c.Value
|
||||
case CondStringGreaterThanEquals:
|
||||
return val >= c.Value
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue