|
1 | 1 | -- Org membership is now associated with a specific role within the org, this simplifies things, |
2 | 2 | -- makes the data more consistent, no need to rely on triggers, and makes it much easier to display in the UI. |
3 | 3 |
|
| 4 | + |
| 5 | +-- SANITY CHECK: |
| 6 | +-- SELECT org_user.handle, member_user.handle, role.ref |
| 7 | +-- FROM orgs org |
| 8 | +-- JOIN role_memberships rm ON rm.resource_id = org.resource_id |
| 9 | +-- JOIN users member_user ON rm.subject_id = member_user.subject_id |
| 10 | +-- JOIN roles role ON role.id = rm.role_id |
| 11 | +-- JOIN users org_user ON org.user_id = org_user.id; |
| 12 | + |
| 13 | +-- SELECT org_user.handle, member_user.handle |
| 14 | +-- FROM org_members om |
| 15 | +-- JOIN users org_user ON om.organization_user_id = org_user.id |
| 16 | +-- JOIN users member_user ON om.member_user_id = member_user.id |
| 17 | +-- ; |
| 18 | + |
| 19 | + |
4 | 20 | ALTER TABLE org_members |
5 | 21 | ADD COLUMN role_id UUID REFERENCES roles(id) NULL; |
6 | 22 |
|
@@ -80,9 +96,24 @@ CREATE OR REPLACE VIEW subject_resource_permissions(subject_id, resource_id, per |
80 | 96 | JOIN resource_hierarchy rh ON drp.resource_id = rh.parent_resource_id |
81 | 97 | ); |
82 | 98 |
|
| 99 | +-- -- SANITY CHECK |
| 100 | +-- SELECT rm.subject_id, r.ref |
| 101 | +-- FROM role_memberships rm |
| 102 | +-- JOIN roles r ON rm.role_id = r.id |
| 103 | +-- -- JOIN users u ON rm.subject_id = u.subject_id |
| 104 | +-- WHERE |
| 105 | +-- r.ref::text IN ('org_viewer', 'org_maintainer', 'org_contributor', 'org_admin', 'org_owner', 'org_default'); |
83 | 106 |
|
84 | 107 | DELETE FROM role_memberships rm |
85 | 108 | USING roles r |
86 | 109 | WHERE |
87 | 110 | rm.role_id = r.id |
88 | 111 | AND r.ref::text IN ('org_viewer', 'org_maintainer', 'org_contributor', 'org_admin', 'org_owner', 'org_default'); |
| 112 | + |
| 113 | +-- SANITY CHECK |
| 114 | +-- SELECT org_user.handle, member_user.handle, role.ref |
| 115 | +-- FROM org_members om |
| 116 | +-- JOIN users org_user ON om.organization_user_id = org_user.id |
| 117 | +-- JOIN users member_user ON om.member_user_id = member_user.id |
| 118 | +-- JOIN roles role ON role.id = om.role_id |
| 119 | +-- ; |
0 commit comments