Given an organisation that has different kind of u...
# spicedb
c
Given an organisation that has different kind of users and each user belongs to some groups. The users can see different charts according to the groups they are under. The users are limited to various periods which limits how far back the charts can report, e.g. some users can see 90 days of records, some can see 180 days and admins are not limited.
Copy code
sql
definition user {}

definition chart {
    relation manager: user | usergroup#member | usergroup#manager
    relation viewer: user | usergroup#member | usergroup#manager 
    relation organization: organization

    permission manage = manager + organization->admin
    permission view = viewer + manager + organization->admin
}

definition usergroup {
    relation manager: user | usergroup#member | usergroup#manager
    relation direct_member: user | usergroup#member | usergroup#manager

    permission member = direct_member + manager
}

definition organization {
    relation group: usergroup
    relation administrator: user | usergroup#member | usergroup#manager
    relation direct_member: user

    permission admin = administrator
    permission member = direct_member + administrator + group->member
}

definition datasource {
    relation last_90_days: usergroup#member

    permission limit_90_days = last_90_days
}
I am having trouble figuring out how I should design
datasource
to maximise flexibility so that it works with 1. arbirtrary days, it can be 93 days, 2 days or 183 days. 2. a user can be an admin(unlimited) and also in mulitple groups(90 and 180 days), in this case, the user will not have limit on the dataset. Here is a [Playground](https://play.authzed.com/s/adoH64dBv3H9/assertions)