mirror of
https://github.com/pomerium/pomerium.git
synced 2025-07-27 21:49:12 +02:00
ppl: support . in object_get paths (#3263)
This commit is contained in:
parent
e637ff4ff3
commit
25a7afd6e6
2 changed files with 8 additions and 8 deletions
|
@ -751,14 +751,14 @@ else = [] {
|
||||||
}
|
}
|
||||||
|
|
||||||
object_get(obj, key, def) = value {
|
object_get(obj, key, def) = value {
|
||||||
segments := split(key, "/")
|
segments := split(replace(key, ".", "/"), "/")
|
||||||
count(segments) == 2
|
count(segments) == 2
|
||||||
o1 := object.get(obj, segments[0], {})
|
o1 := object.get(obj, segments[0], {})
|
||||||
value = object.get(o1, segments[1], def)
|
value = object.get(o1, segments[1], def)
|
||||||
}
|
}
|
||||||
|
|
||||||
else = value {
|
else = value {
|
||||||
segments := split(key, "/")
|
segments := split(replace(key, ".", "/"), "/")
|
||||||
count(segments) == 3
|
count(segments) == 3
|
||||||
o1 := object.get(obj, segments[0], {})
|
o1 := object.get(obj, segments[0], {})
|
||||||
o2 := object.get(o1, segments[1], {})
|
o2 := object.get(o1, segments[1], {})
|
||||||
|
@ -766,7 +766,7 @@ else = value {
|
||||||
}
|
}
|
||||||
|
|
||||||
else = value {
|
else = value {
|
||||||
segments := split(key, "/")
|
segments := split(replace(key, ".", "/"), "/")
|
||||||
count(segments) == 4
|
count(segments) == 4
|
||||||
o1 := object.get(obj, segments[0], {})
|
o1 := object.get(obj, segments[0], {})
|
||||||
o2 := object.get(o1, segments[1], {})
|
o2 := object.get(o1, segments[1], {})
|
||||||
|
@ -775,7 +775,7 @@ else = value {
|
||||||
}
|
}
|
||||||
|
|
||||||
else = value {
|
else = value {
|
||||||
segments := split(key, "/")
|
segments := split(replace(key, ".", "/"), "/")
|
||||||
count(segments) == 5
|
count(segments) == 5
|
||||||
o1 := object.get(obj, segments[0], {})
|
o1 := object.get(obj, segments[0], {})
|
||||||
o2 := object.get(o1, segments[1], {})
|
o2 := object.get(o1, segments[1], {})
|
||||||
|
|
|
@ -177,25 +177,25 @@ func ObjectGet() *ast.Rule {
|
||||||
# object_get is like object.get, but supports converting "/" in keys to separate lookups
|
# object_get is like object.get, but supports converting "/" in keys to separate lookups
|
||||||
# rego doesn't support recursion, so we hard code a limited number of /'s
|
# rego doesn't support recursion, so we hard code a limited number of /'s
|
||||||
object_get(obj, key, def) = value {
|
object_get(obj, key, def) = value {
|
||||||
segments := split(key, "/")
|
segments := split(replace(key, ".", "/"), "/")
|
||||||
count(segments) == 2
|
count(segments) == 2
|
||||||
o1 := object.get(obj, segments[0], {})
|
o1 := object.get(obj, segments[0], {})
|
||||||
value = object.get(o1, segments[1], def)
|
value = object.get(o1, segments[1], def)
|
||||||
} else = value {
|
} else = value {
|
||||||
segments := split(key, "/")
|
segments := split(replace(key, ".", "/"), "/")
|
||||||
count(segments) == 3
|
count(segments) == 3
|
||||||
o1 := object.get(obj, segments[0], {})
|
o1 := object.get(obj, segments[0], {})
|
||||||
o2 := object.get(o1, segments[1], {})
|
o2 := object.get(o1, segments[1], {})
|
||||||
value = object.get(o2, segments[2], def)
|
value = object.get(o2, segments[2], def)
|
||||||
} else = value {
|
} else = value {
|
||||||
segments := split(key, "/")
|
segments := split(replace(key, ".", "/"), "/")
|
||||||
count(segments) == 4
|
count(segments) == 4
|
||||||
o1 := object.get(obj, segments[0], {})
|
o1 := object.get(obj, segments[0], {})
|
||||||
o2 := object.get(o1, segments[1], {})
|
o2 := object.get(o1, segments[1], {})
|
||||||
o3 := object.get(o2, segments[2], {})
|
o3 := object.get(o2, segments[2], {})
|
||||||
value = object.get(o3, segments[3], def)
|
value = object.get(o3, segments[3], def)
|
||||||
} else = value {
|
} else = value {
|
||||||
segments := split(key, "/")
|
segments := split(replace(key, ".", "/"), "/")
|
||||||
count(segments) == 5
|
count(segments) == 5
|
||||||
o1 := object.get(obj, segments[0], {})
|
o1 := object.get(obj, segments[0], {})
|
||||||
o2 := object.get(o1, segments[1], {})
|
o2 := object.get(o1, segments[1], {})
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue