Sumedha
08/28/2024, 7:40 PMSumedha
08/28/2024, 7:41 PMdelete_membership
permission. A membership can either be deleted by a member or by the business admin of the business. Without modeling the membership as its own object, we could define the delete_membership
permission on either the business object or the member object, but there are issues with both:
* If it's defined in the business, then we don't know which user's membership is being deleted, so a user could delete another user's membership.
* If it's defined in the member, we don't know which business the membership corresponds to, so an admin of a business may delete a member's membership to another businessSumedha
08/28/2024, 7:41 PMdefinition user {
relation self: user
}
definition business {
relation membership: user
relation admin: user
}
definition membership {
relation member: user
relation business: business
permission delete_membership: member + business->admin
}
Sumedha
08/28/2024, 7:42 PMdelete_membership
on the business definition: definition business {
relation admin: user
relation membership: user
//...
permission delete_membership: admin + user // ???
}
Sumedha
08/28/2024, 7:43 PMdelete_membership
on the member defintion: definition user {
relation self: user
relation membership: business
//...
permission delete_membership: self + membership->business_admin
}
yetitwo
08/28/2024, 7:48 PMmembership
as its own entity makes sense to me if it's treated as an entity unto itself by your systemyetitwo
08/28/2024, 7:48 PMSumedha
08/28/2024, 7:50 PMyetitwo
08/28/2024, 8:14 PM