Menu Structure
The Centinela system uses a hierarchical menu structure:- Top-level menus (level 0): Main navigation items
- Sub-menus (level 1+): Nested under parent menus
- Groups: Logical groupings of related menus
Menu Properties
Each menu item has the following properties:Unique identifier for the menu item
Display name shown in the navigation
Route path for the menu item (e.g.,
/config/alarms)Group identifier for organizing related menus
Hierarchy level:
"0"= Top-level menu"1"= First-level sub-menu"2"= Second-level sub-menu
Parent menu ID if this is a sub-menu,
null for top-level menusMenu visibility status:
"1"= Active/visible"0"= Inactive/hidden
Display order within the menu group (lower numbers appear first)
Icon identifier for the menu item (optional)
Special action or handler (optional)
Default Menu Structure
The system includes these predefined menu groups:/src/modules/ConfigMenu/utils/DataMenu/menus.js:1-134
Permission System
The system supports two levels of permissions:- Profile Permissions
- User Permissions
Define default access for all users in a role/profile.Use Case: Grant all operators access to monitoring dashboardsPriority: Profile permissions are applied first as defaults
Permission Object Structure
Configuring Permissions
Navigate to Menu Configuration
Access Configuration > Menu to open the permission management interface.
Review Menu Hierarchy
The interface displays all menus in an accordion structure organized by groups.
Permission Interface Components
Accordion Structure
Menus are displayed in expandable accordions:/src/modules/ConfigMenu/components/PermissionMenu/PermissionMenu.jsx:218-270
Checkbox States
All sub-menus have permission granted
No sub-menus have permission granted
Some (but not all) sub-menus have permission granted
/src/modules/ConfigMenu/components/PermissionMenu/PermissionMenu.jsx:56-80
Permission Inheritance
Hierarchical Selection
When a parent menu checkbox is toggled, all sub-menus inherit the same status:/src/modules/ConfigMenu/components/PermissionMenu/PermissionMenu.jsx:28-47
Profile Permission Locking
When configuring user permissions, menu items granted via profile permissions are disabled:Users cannot have permissions revoked at the user level if they’re granted by their profile. Profile permissions must be changed to remove access.
/src/modules/ConfigMenu/components/PermissionMenu/PermissionMenu.jsx:236-244
Saving Permissions
Permissions are saved by sending the complete permission set to the backend:/src/modules/ConfigMenu/components/PermissionMenu/PermissionMenu.jsx:170-204
API Endpoints
| Endpoint | Method | Description |
|---|---|---|
/getAllMenu | GET | Retrieve all menu items |
/getPermission | GET | Get permissions for user or profile |
/savePermission | POST | Save permission configuration |
Get Permissions Request
/src/modules/ConfigMenu/components/PermissionMenu/PermissionMenu.jsx:129-158
Menu Grouping Logic
Menus are grouped hierarchically using thegroup_menu and sub_menu properties:
/src/modules/ConfigMenu/components/PermissionMenu/PermissionMenu.jsx:91-115
Best Practices
Profile-Based Permissions
Profile-Based Permissions
Recommended Approach:
- Define roles/profiles (Operator, Supervisor, Administrator)
- Grant base permissions at the profile level
- Use user-specific permissions only for exceptions
- Easier to manage large user bases
- Consistent access within roles
- Reduced configuration overhead
Menu Organization
Menu Organization
Permission Auditing
Permission Auditing
Regular reviews:
- Quarterly review of profile permissions
- Monthly audit of user-specific overrides
- Document reasons for exceptions
- Remove permissions when users change roles
Troubleshooting
User Cannot Access Menu
User Cannot Access Menu
Checkbox State Incorrect
Checkbox State Incorrect
Common Causes:
- Profile permission overriding user permission
- Cache not refreshed after permission change
- Hierarchical state calculation issue
- Reload the permission configuration page
- Verify in database that permissions saved correctly
- Check browser console for JavaScript errors
Cannot Save Permissions
Cannot Save Permissions
Checklist:
- Ensure you have admin privileges
- Check network tab for API errors
- Verify backend endpoint is accessible
- Review request payload for malformed data
Security Considerations
Principle of Least Privilege
Principle of Least Privilege
Grant users only the minimum permissions needed:
- Operators: Monitoring and basic operations
- Supervisors: Configuration and reports
- Administrators: Full system access
Permission Changes
Permission Changes
- Log all permission modifications
- Require approval for sensitive permission grants
- Notify users when their permissions change
- Maintain audit trail
Default Deny
Default Deny
New users and profiles should have no permissions by default. Explicitly grant access rather than revoking it.
Permission changes take effect immediately after saving. Users may need to refresh their browser or log out and back in to see updated menus.
