Mechanically
Two parallel permission systems: the canonical Convex ladder (10 roles x preview/edit/upload/download/delete) and a separate Supabase-backed table read by permissionUtils for file operations.
Two parallel permission systems: the canonical Convex ladder (10 roles x preview/edit/upload/download/delete) and a separate Supabase-backed table read by permissionUtils for file operations.
Render-gates the UI. Enforcement is cosmetic — no Convex function checks a role.
src/pages/AccessControlPanel.tsxsrc/pages/UserManagement.tsxsrc/components/admin/rolePermissions.tsaccessUsers.tsrolePermissionsprofilesconvex/*.ts
src/**
convex/rolePermissions.ts vs src/utils/permissionUtils.ts
TRANSPLANT — casl collapses the two permission systems, server-enforced.
Isomorphic RBAC — collapses his two permission systems, server-enforced.
Relationship authz service — only if resource-sharing gets complex.
LIFT = copy the code into the fork · WRAP = run underneath as a service · STUDY = architecture only. Verdicts from the OFM sourcing campaign.
Research priority for this domain is medium. Agent findings splice in below this line and survive regeneration.