Model
If organization membership is all you need, every member gets the same access with no finer distinction. You only need: If different members need different access, add roles. Which shape those roles take depends on where they come from:- Static roles, defined once by your application as a fixed set of named permissions (like an “Approver” role): model each as its own named relation directly on
organization, per Roles: Static roles. - Dynamic roles, defined by each customer or organization themselves, with names, IDs, and permissions your application can’t know ahead of time: model these generically, wired through an intermediate
organization_membershipobject so a role assignment can be revoked without knowing which roles a user held, as covered in Roles: a user, within an organization membership.