Joey
09/16/2022, 5:03 PMraffaelespazzoli
09/16/2022, 5:06 PMdefinition user {}
definition group {
relation member: user | group#member
relation assigned_to: location
}
definition role {
relation membership: group#member
}
definition thing {
relation group: group
relation viewer: role#membership
permission view: viewer + group
}
Joey
09/16/2022, 5:08 PMrelation group: group
is going to terminate at the groupJoey
09/16/2022, 5:08 PMgroup#member
there or have view = viewer + group->member
Joey
09/16/2022, 5:08 PMJoey
09/16/2022, 5:09 PMview = viewer & group->member
raffaelespazzoli
09/16/2022, 5:14 PMschema: |-
definition user {}
definition group {
relation member: user | group#member
relation assigned_to: location
}
definition role {
relation membership: group#member
}
definition thing {
relation group: group
relation viewer: role#membership
permission view: viewer & group
relation creator: role#membership
permission create: (creator + viewer) & group
}
relationships: |-
group:managers#member@user:jane
group:clerks#member@user:mary
role:manager#membership@group:managers#member
role:clerk#membership@group:clerks#member
thing:*#viewer@role:clerk
thing:*#creator@role:manager
assertions:
assertTrue: [
thing:thing1#view@user:jane,
thing:thing1#view@user:mary,
thing:thing1#create@user:jane,
]
assertFalse: [
thing:thing1#create@user:mary,
]
validation: {}
like this?Joey
09/16/2022, 5:15 PM=
Joey
09/16/2022, 5:15 PMrelation group: group
Joey
09/16/2022, 5:15 PMrelation group: group#member
Joey
09/16/2022, 5:15 PMJoey
09/16/2022, 5:15 PMpermission create = (creator + viewer) & group->member
raffaelespazzoli
09/16/2022, 5:21 PMschema: |-
definition user {}
definition group {
relation member: user | group#member
}
definition role {
relation membership: group#member
}
definition thing {
relation group: group#member
relation viewer: role#membership
relation creator: role#membership
permission view = viewer & group -> member
permission create = (creator + viewer) & group -> member
}
relationships: |-
group:managers#member@user:jane
group:clerks#member@user:mary
role:manager#membership@group:managers#member
role:clerk#membership@group:clerks#member
thing:*#viewer@role:clerk
thing:*#creator@role:manager
assertions:
assertTrue: [
thing:thing1#view@user:jane,
thing:thing1#view@user:mary,
thing:thing1#create@user:jane,
]
assertFalse: [
thing:thing1#create@user:mary,
]
validation: {}
but I feel there is something wrong as I never assigned any group to thing1 and yet the assertions workJoey
09/16/2022, 5:21 PMthing:*#viewer@role:clerk
thing:*#creator@role:manager
Joey
09/16/2022, 5:21 PMraffaelespazzoli
09/16/2022, 5:23 PMJoey
09/16/2022, 5:23 PMJoey
09/16/2022, 5:23 PMJoey
09/16/2022, 5:23 PMthing:whatever
Joey
09/16/2022, 5:25 PMJoey
09/16/2022, 5:25 PMJoey
09/16/2022, 5:25 PMJoey
09/16/2022, 5:25 PMraffaelespazzoli
09/16/2022, 5:44 PMJoey
09/16/2022, 5:45 PMJoey
09/16/2022, 5:46 PMJoey
09/16/2022, 5:46 PMraffaelespazzoli
09/16/2022, 5:48 PMJoey
09/16/2022, 5:51 PMJoey
09/16/2022, 5:51 PMJoey
09/16/2022, 5:51 PMthing
Bryan
09/16/2022, 6:03 PMJoey
09/16/2022, 6:05 PMraffaelespazzoli
09/16/2022, 6:24 PM