User Roles & Permissions
CAFH Platform implements a hierarchical role-based access control (RBAC) system with five distinct roles. Each role has specific permissions and access levels throughout the platform.Role Hierarchy
Roles are hierarchical: higher roles inherit all permissions from lower roles.
Role Definitions
SUPER_ADMIN
Super Administrator
Highest privilege level - Full system access with no restrictions
- All admin panel modules
- System configuration and settings
- User management (create/edit/delete admins)
- Tenant-wide settings
- Dangerous operations (bulk delete, data export)
- Platform owner or technical administrator
- Managing multiple tenants/organizations
- System maintenance and troubleshooting
- Initial platform setup and configuration
ADMIN
Administrator
Full content and member management - Can manage all aspects except system settings
- Dashboard with analytics
- CRM & contact management
- Email campaigns and automations
- CMS (create/edit/delete pages)
- Media library (upload/delete assets)
- Event and activity calendar
- Virtual meeting management
- Member profiles and engagement data
- System-level configuration
- Creating other admin users (typically)
- Tenant settings
- Community managers
- Content editors
- Marketing coordinators
- Event organizers
EDITOR
Editor
Content creation and editing - Limited to CMS and media library
- CMS page builder (create/edit pages)
- Blog post creation and editing
- Media library (upload only, no delete)
- Content preview and publishing
- CRM and contact data
- Email campaigns
- Analytics dashboard
- User management
- System settings
- Content writers
- Blog authors
- Volunteer content managers
- Guest contributors with limited access
The EDITOR role is defined in the type system but not yet implemented in the routing layer. This is a future enhancement.
MEMBER
Member
Registered user - Access to member portal and personalized content
- Member dashboard at
/member/dashboard - Personal profile and settings
- Activity history and badges
- Event registration and participation
- Content library (member-only resources)
- Virtual meeting lobby (when registered)
- Feedback forms and surveys
- Any admin panel routes (
/admin/*) - Other members’ data
- Contact lists
- System configuration
GUEST
Guest
Unauthenticated user - Public access only
- Public homepage and marketing pages
- Blog posts (marked as public)
- Resources marked as
access: 'public' - Event calendar (view only)
- Login and registration pages
- Member dashboard
- Any admin routes
- Private content
- Event registration
- Profile settings
- Website visitors
- Prospective members
- Search engine crawlers
- Social media link previews
Permission Matrix
| Feature | SUPER_ADMIN | ADMIN | EDITOR | MEMBER | GUEST |
|---|---|---|---|---|---|
| View Public Pages | ✅ | ✅ | ✅ | ✅ | ✅ |
| Member Dashboard | ✅ | ✅ | ✅ | ✅ | ❌ |
| Edit CMS Pages | ✅ | ✅ | ✅ | ❌ | ❌ |
| Upload Media | ✅ | ✅ | ✅ | ❌ | ❌ |
| Delete Media | ✅ | ✅ | ❌ | ❌ | ❌ |
| Access CRM | ✅ | ✅ | ❌ | ❌ | ❌ |
| Send Campaigns | ✅ | ✅ | ❌ | ❌ | ❌ |
| Create Automations | ✅ | ✅ | ❌ | ❌ | ❌ |
| View Analytics | ✅ | ✅ | ❌ | ❌ | ❌ |
| System Settings | ✅ | ❌ | ❌ | ❌ | ❌ |
| Manage Users | ✅ | ❌ | ❌ | ❌ | ❌ |
Role Assignment
Default Assignment
New users are typically assigned roles based on registration method:Changing Roles
Only SUPER_ADMIN can change user roles:Route Protection Implementation
TheProtectedRoute component enforces access control (App.tsx:33-47):
Best Practices
Principle of Least Privilege
Always assign the minimum role needed for a user’s responsibilities
Regular Audits
Periodically review user roles and revoke unnecessary access
Role Separation
Don’t use SUPER_ADMIN for daily tasks; create an ADMIN account instead
Document Changes
Log all role changes in your change management system
Advanced Scenarios
Multi-Tenant Role Isolation
In a multi-tenant setup, roles are scoped to tenants:tenant_a has no access to tenant_b.
Conditional UI Rendering
Components can check roles to show/hide features:Related Concepts
Multi-Tenancy
How roles interact with tenant isolation
Data Model
See the full User entity structure