Date: 2026-01-26Documentation Index
Fetch the complete documentation index at: https://docs.encoreos.io/llms.txt
Use this file to discover all available pages before exploring further.
Status: ✅ Complete
Component:
ObjectPermissionsTab and related components
What Was Changed
1. Created New Hook ✅
- File:
src/platform/data-manager/hooks/useAvailableRoles.ts - Purpose: Fetch all available roles dynamically (18 system roles + custom roles)
- Features:
- Returns all system roles from
app_roleenum - Prepared for custom roles (when PF-26 supports them)
- Provides
getRoleLabel()andgetRoleOrder()helpers
- Returns all system roles from
2. Updated ObjectPermissionsTab ✅
- File:
src/platform/data-manager/components/ObjectPermissionsTab.tsx - Changes:
- Removed dependency on hardcoded
ORDERED_ROLES(only had 5 roles) - Now uses
useAvailableRoles()hook (shows all 18 system roles) - Dynamic role initialization from database
- Updated deprecation notice to reflect completion
- Removed dependency on hardcoded
3. Updated ObjectPermissionMatrix ✅
- File:
src/platform/data-manager/components/ObjectPermissionMatrix.tsx - Changes:
- Removed
ROLE_CONFIGimport - Uses
roleLabelfrom props (set by parent component) - Removed sorting logic (parent handles ordering)
- Removed
4. Updated FieldPermissionsSection ✅
- File:
src/platform/data-manager/components/FieldPermissionsSection.tsx - Changes:
- Removed
ORDERED_ROLESandROLE_CONFIGimports - Uses
useAvailableRoles()hook - Uses
getRoleLabel()helper for display names
- Removed
5. Updated Type Definitions ✅
- File:
src/platform/data-manager/types/permissions.ts - Changes:
- Added deprecation notices to
ORDERED_ROLESandROLE_CONFIG - Marked for removal after 2026-03-31
- Kept for backward compatibility during transition
- Added deprecation notices to
Benefits
- Complete Role Coverage: Now shows all 18 system roles instead of just 5
- Dynamic: Role list is database-driven, not hardcoded
- Future-Ready: Prepared for custom roles when PF-26 supports them
- Consistent: Uses same role fetching pattern as rest of V2 system
- Maintainable: No more hardcoded role lists to update
Breaking Changes
None - This is a non-breaking enhancement:- Existing permissions in database remain valid
- Component API unchanged
- All existing functionality preserved
- Only adds more roles to the UI
Testing Required
Before considering migration complete:- Verify all 18 system roles appear in permission matrix
- Verify role ordering is correct
- Verify permissions can be saved for all roles
- Verify existing permissions load correctly
- Verify field permissions work with all roles
- Verify site scope configuration works
- Test with organizations that have custom roles (when supported)
Next Steps
- Testing: Run comprehensive tests on ObjectPermissionsTab
- Documentation: Update user guides if needed
- Cleanup (After 2026-03-31): Remove deprecated
ORDERED_ROLESandROLE_CONFIGconstants
Files Modified
- ✅
src/platform/data-manager/hooks/useAvailableRoles.ts(new) - ✅
src/platform/data-manager/components/ObjectPermissionsTab.tsx - ✅
src/platform/data-manager/components/ObjectPermissionMatrix.tsx - ✅
src/platform/data-manager/components/FieldPermissionsSection.tsx - ✅
src/platform/data-manager/types/permissions.ts - ✅
docs/platform/data-manager/OBJECT_PERMISSIONS_V2_MIGRATION.md(new)
See Also
- Migration Plan - Detailed migration documentation
- PF-26 Object Permissions Spec
- PF-30 Permissions System V2 Spec