teatime π©π°
04/24/2025, 11:55 AMvroldanbet
04/24/2025, 2:14 PMuse expiration
definition user{}
definition resource {
relation viewer: user
relation banned: user with expiration
permission view = viewer - banned
}
teatime π©π°
04/25/2025, 11:43 AMdefinition user {
relation suspended: user
permission is_suspended = suspended
}
definition group {
relation member: user
permission is_member = member
permission user_suspended = member->is_suspended
}
definition folder {
relation owner: group
permission is_member = owner->is_member
permission user_suspended = owner->user_suspended
}
definition resource {
relation folder: folder
permission can_view = folder->is_member
permission can_edit = folder->is_member - folder->user_suspended
}
vroldanbet
04/28/2025, 2:53 PMgroup#member
definition user {
relation suspended: user
permission is_suspended = suspended
}
definition group {
relation member: user
permission is_member = member
permission user_suspended = member->is_suspended
permission can_view = is_member
permission can_edit = can_view - user_suspended
}
definition folder {
relation owner: group
permission is_member = owner->is_member
permission user_suspended = owner->user_suspended
permission can_view = owner->can_view
permission can_edit = owner->can_edit
}
definition resource {
relation folder: folder
permission can_view = folder->can_view
permission can_edit = folder->can_edit
}
if with propagation you mean that you need that chain of synthetic permissions in folder and group, yes, that has to be done. There is https://github.com/authzed/spicedb/issues/15 to help with ergonomics associated with that propagation.teatime π©π°
04/29/2025, 11:12 AM