Skip to content

Roles & permissions - basic role permission manage

StageBuilding
StatusPartial
Design statusIn progress
EstimateM
ConfidenceLow
LinearPIN-262 ↗ PIN-123 ↗ PIN-151 ↗
Linear statusTodo · +1 backlog
CycleC15
DesignDesign ↗
Linear epicPlatform Foundation
ModuleSettings & Admin ↗

Priority: High · Route: /roles

Scope

Admin-managed role × permission matrix: Owner/Admin can grant or revoke permissions per role directly (no dev involvement), covering the 12-role hierarchy across 6 categories, with changes taking effect immediately and every change audit-logged. (Source: PIN-262, PIN-123, PIN-151.)

Acceptance criteria

  • Permissions grid: rows = roles, columns = permissions, checkbox per cell
  • Toggling a permission for a role persists and takes effect without a service restart
  • Every permission change is audit-logged (who, when, what changed)
  • 12 functional roles across 6 categories (Executive/Owner, Admin, Admin Assistant, Finance, PM tiers, Estimating tiers, Compliance, Field)
  • Editing the matrix itself is restricted to the Owner role
  • Sidebar and action buttons (Add/Edit/Delete) hide per-permission rather than just disabling
  • Navigating to a permission-denied route shows a "Not Authorized" page, not a blank screen
  • Sensitive financial fields (cost, margin, contract totals, vendor quotes) are masked per role tier on top of standard permission checks

Conor's comments

All modules will need to be filterd by access level.

Notes

Design has 4 tabs (Access/Classification/Cara/Tenant). Margin leak = launch-critical (PIN-151)

Open question for Conor

Confirm PM-tier masking