UserRole type and enforced by the ROLE_PERMISSIONS matrix.
User roles are distinct from crew roles. A user role governs platform access; a crew role defines an individual’s function on a specific flight.
Users can hold multiple roles simultaneously within a workspace. A user’s effective
permissions are the union of all their assigned roles. For example, a chief pilot who also serves
as safety manager would hold both
chief_pilot and safety_manager roles, receiving the combined
permissions of both.Role Categories
Core Workspace Roles
These three roles are always available regardless of which modules are enabled.SMS/Safety Roles
These roles support the safety management system required by FAA 14 CFR Part 5. Several are regulatory designations defined in 14 CFR.Operations Roles
These roles manage flight operations, crew, fleet, dispatch, and financial functions. Several are management positions defined in 14 CFR 119.69.Portal Roles
Portal roles are scoped to customer-facing portals. They cannot access operator-side modules (safety, ops, FBO staff, dispatch, crew, or settings). Portal users access the platform at/{workspace}/portal.
System Roles
System roles operate above the workspace level and are managed by PlaneConnection staff. They cannot be assigned by workspace administrators.Role Hierarchy
Roles do not follow a strict linear hierarchy. Different roles have domain-specific depth that does not fully overlap. The following shows general access breadth:API Role Hierarchy
The REST API uses a numeric role hierarchy for coarse-grained access checks (higher number = more privileges). This is separate from the fine-grained permission matrix used in the main app:The API uses this numeric hierarchy for access control checks. The main application uses a full
permission matrix for resource-level access control, which is more granular than numeric levels.
Multi-Role Support
Users can hold multiple roles simultaneously within a workspace. This is common in smaller operations where personnel serve multiple functions:- A chief pilot who is also the safety manager holds both
chief_pilotandsafety_managerroles. - A director of operations who handles dispatch holds both
director_of_operationsanddispatcherroles. - A sole proprietor may additionally hold
safety_managerto gain confidential identity access.
Module-Based Role Availability
Not all roles are available in every workspace. Roles are tied to modules, and only roles whose module is enabled appear in the role assignment dropdown:Module availability determines which roles appear in the role assignment dropdown. Roles marked
“always available” appear regardless of which modules are enabled. The
getAvailableRoles()
function filters the dropdown based on a workspace’s enabled modules.Cross-module access: Roles are not restricted to a single module. A role can access any module
where it has permissions in the permission matrix. For example, a dispatcher (ops role) can access
the FBO module because the permission matrix grants fbo: ["create", "read", "update"]. Module
access is determined by permissions, not by role category. See ADR-012
for the design rationale.Role Assignment Rules
Related
Permissions Matrix
Full feature-by-role permissions matrix and permission sets.
Manage Users
Invite users, assign roles, and manage access.
Crew Roles
Operational crew role definitions (distinct from user roles).
Multi-Tenancy
How workspaces and data isolation work.