OpenContracts Permission System Documentation¶
Overview¶
OpenContracts implements a hierarchical permission system where corpus-level permissions override document-level permissions when a document is viewed within a corpus context. This enables fine-grained access control while supporting both collaborative corpus work and standalone document viewing.
Documentation Index¶
📚 Complete Reference¶
Consolidated Permissioning Guide - START HERE
 Comprehensive end-to-end documentation covering: - Complete architecture overview - Permission types and hierarchy
 - Backend implementation (Django Guardian + custom utilities) - Frontend implementation (React + Jotai state management) - Component integration patterns - GraphQL integration - Security considerations - Current implementation status
🎯 Specialized Guides¶
Corpus-Optional Features
 Detailed guide for implementing features that work both with and without corpus context: - Feature classification (always available vs corpus-required) - Progressive enhancement patterns - Add-to-corpus workflows - Performance considerations
Read-Only Mode Implementation
 Comprehensive guide to read-only mode: - Component support status - Implementation patterns - UI/UX considerations
 - Testing strategies - Migration guide for existing components
Testing Permissions
 Complete testing strategy and utilities: - Test utilities and mock factories - Testing patterns for different scenarios - Component test examples - Integration and E2E test patterns - Debug helpers
Quick Navigation¶
| Topic | Main Guide | Specialized Guide | 
|---|---|---|
| Architecture | ✅ Consolidated Guide | - | 
| Backend Implementation | ✅ Consolidated Guide | - | 
| Frontend Implementation | ✅ Consolidated Guide | - | 
| Corpus-Optional Features | Basic coverage | ✅ Detailed Guide | 
| Read-Only Mode | Basic coverage | ✅ Detailed Guide | 
| Testing | Basic coverage | ✅ Detailed Guide | 
Getting Started¶
- New to the permission system? Start with the Consolidated Permissioning Guide
 - Implementing corpus-optional features? See Corpus-Optional Features
 - Adding read-only support to components? Check Read-Only Mode Implementation
 - Writing tests? Use Testing Permissions
 
Key Principles¶
- Corpus Priority: Corpus permissions override document permissions
 - Progressive Enhancement: Features enabled based on available permissions
 - Fail Secure: Default to most restrictive permissions when uncertain
 - Server-Side Enforcement: Client checks are UX-only; all security is server-side
 
Current Status¶
See the Current Implementation Status section in the Consolidated Permissioning Guide for detailed implementation status and production readiness information.