Skip to content

Commit d004621

Browse files
committed
Add policies to enable Tiled
1 parent 2c02fc4 commit d004621

File tree

4 files changed

+66
-0
lines changed

4 files changed

+66
-0
lines changed

policy/diamond/policy/session/session.rego

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,3 +55,9 @@ write_to_beamline_visit if {
5555
access
5656
matches_beamline
5757
}
58+
59+
user_sessions contains session if {
60+
subject := token.claims.fedid
61+
some session in data.diamond.data.sessions
62+
access_session(subject, session.proposal_number, session.visit_number)
63+
}

policy/diamond/policy/session/session_test.rego

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package diamond.policy.session_test
22

33
import data.diamond.policy.session
4+
import data.diamond.policy.token
45
import rego.v1
56

67
diamond_data := {
@@ -181,3 +182,10 @@ test_session_beamline if {
181182
with data.diamond.data as diamond_data
182183
bl2 == "b07"
183184
}
185+
186+
test_user_session_tags if {
187+
session.user_sessions == set() with data.diamond.data as diamond_data with data.diamond.policy.token.claims as {"fedid": "oscar"}
188+
session.user_sessions == {{"proposal_number": 1, "visit_number": 2, "beamline": "b07"}, {"proposal_number": 1, "visit_number": 1, "beamline": "i03"}} with data.diamond.data as diamond_data with data.diamond.policy.token.claims as {"fedid": "alice"}
189+
session.user_sessions == {{"proposal_number": 1, "visit_number": 2, "beamline": "b07"}, {"proposal_number": 1, "visit_number": 1, "beamline": "i03"}} with data.diamond.data as diamond_data with data.diamond.policy.token.claims as {"fedid": "bob"}
190+
session.user_sessions == {{"proposal_number": 1, "visit_number": 2, "beamline": "b07"}, {"proposal_number": 1, "visit_number": 1, "beamline": "i03"}} with data.diamond.data as diamond_data with data.diamond.policy.token.claims as {"fedid": "carol"}
191+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package diamond.policy.tiled
2+
3+
import data.diamond.policy.token
4+
5+
read_scopes = {
6+
"read:metadata",
7+
"read:data",
8+
}
9+
10+
write_scopes = {
11+
"write:metadata",
12+
"write:data",
13+
"create",
14+
"register",
15+
}
16+
17+
default scopes := set()
18+
19+
scopes_for(claims) := read_scopes & write_scopes if {
20+
"azp" in object.keys(claims)
21+
endswith(claims.azp, "-blueapi")
22+
}
23+
24+
scopes_for(claims) := read_scopes if {
25+
"azp" in object.keys(claims)
26+
not endswith(claims.azp, "-blueapi")
27+
}
28+
29+
scopes_for(claims) := read_scopes if {
30+
not "azp" in object.keys(claims)
31+
}
32+
33+
scopes := scopes_for(token.claims)
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package diamond.policy.tiled_test
2+
3+
import data.diamond.policy.tiled
4+
import data.diamond.policy.token
5+
import rego.v1
6+
7+
test_default_no_scopes if {
8+
tiled.scopes == set()
9+
}
10+
11+
test_wrong_azp_read_scopes if {
12+
tiled.scopes == tiled.read_scopes with token.claims as {}
13+
tiled.scopes == tiled.read_scopes with token.claims as {"sub": "foo"}
14+
tiled.scopes == tiled.read_scopes with token.claims as {"azp": "foo"}
15+
}
16+
17+
test_blueapi_given_write_scopes if {
18+
tiled.scopes == tiled.read_scopes & tiled.write_scopes with token.claims as {"azp": "foo-blueapi"}
19+
}

0 commit comments

Comments
 (0)