Migration: Role → Permissions
Changes Completed ✅
-
✅ Consolidated database migration (
0031_permissions) - includes:- Creation of permissions system (tables, plans, permissions, limits)
- Removal of
rolefield fromuserstable - Removal of social fields (
website,instagram,facebook,thread) fromuserstable (already migrated touser_metadata) - Automatic migration of existing ADMIN users to ENTERPRISE plan with
ADMIN_ACCESSpermission
-
✅ Database types updated (removal of
roleinUserTable) -
✅ Permission helpers created (
verifyAdmin,isUserAdmin,verifyPermission,verifyLimit) -
✅
app.controller.tsupdated (all role checks replaced by@RequirePermission('ADMIN_ACCESS')) -
✅
users.service.tsupdated:- Removed
roleparameter fromcreate() - Removed
rolefromupdateUser() promoteToAdmin()marked as deprecated (now uses PermissionsService)
- Removed
-
✅
users.controller.tsupdated:- Removed
rolefromcreateUser()endpoint promoteToAdmin()now usesPermissionsService.assignSubscription()to assign ENTERPRISE plan- All
req.user.role !== "ADMIN"checks replaced by@RequirePermission("ADMIN_ACCESS") - Removed
rolefromupdateUser()endpoint
- Removed
-
✅
auth.service.tsupdated:- Removed
rolefromAuthenticatedUserinterface - Removed
role: row.role ?? "MEMBER"fromtoAuthUser()
- Removed
-
✅ OpenAPI schemas updated:
- Removed
rolefromUserschema - Removed
rolefromCreateUserRequest - Removed
rolefromUpdateUserRequest - Removed
rolefromAuthenticatedUser - Removed
UserRoleenum
- Removed
-
✅ OpenAPI types regenerated (
npm run openapi:generate) -
✅ Documentation created:
PERMISSIONS_ARCHITECTURE.md- Architecture and decisionsbackend/src/permissions/README.md- Permissions module documentationagents.md- Permission rules and scalability
Remaining Changes ⚠️
Tests
To modify:
__tests__/auth.service.spec.ts: Remove assertions onrolein test objects
Recommended Execution Order
- ✅ Database migrations (consolidated in
0031_permissions) - ✅ Database types
- ✅ Permission helpers
- ✅
app.controller.ts - ✅
auth.service.ts - ✅
users.service.ts - ✅
users.controller.ts - ✅ OpenAPI schemas
- ✅ OpenAPI types regenerated