Permission Hierarchy
Permissions in QFieldCloud operate at three levels:- Organization Level: Controls organization management and membership
- Project Level: Controls project access and operations
- Resource Level: Controls specific actions (files, deltas, jobs, etc.)
Organization roles and project roles are independent. An organization member can have different roles on different projects.
Organization Roles
Organization roles determine what users can do within an organization.Organization Owner
The user who owns the organization (stored asorganization_owner).
Capabilities:
- All admin permissions
- Manage billing and subscriptions
- Transfer ownership to another member
- Delete the organization
- Change subscription plans
- Manage payment methods and storage packages
- Be removed as a member (only ownership can be transferred)
- Be added as a regular member
organization_owner
Admin Role
Organization administrators have extensive management permissions. Capabilities:- ✅ Add and remove organization members
- ✅ Create and delete teams
- ✅ Create organization-owned projects
- ✅ Manage organization settings (profile, avatar, etc.)
- ✅ Add/remove team members
- ✅ Create and delete organization secrets
- ✅ View all organization members
- ✅ Assign project collaborators to organization projects
- ❌ Manage billing and subscriptions
- ❌ Delete the organization
- ❌ Transfer organization ownership
organization_member with role admin
Code Reference: qfieldcloud/core/models.py:774
Member Role
Standard organization members with basic access. Capabilities:- ✅ View organization profile
- ✅ View other organization members
- ✅ Access projects where they’re added as collaborators
- ✅ Be added to teams
- ✅ View teams they belong to
- ❌ Add or remove members
- ❌ Create or delete teams
- ❌ Create organization projects (can create personal projects)
- ❌ Manage organization settings
- ❌ Manage organization secrets
organization_member with role member
Project Roles
Project roles control access to specific projects and their resources.Role Overview
| Role | Read | Write Files | Edit Data | Delete Files | Manage Settings | Manage Collaborators |
|---|---|---|---|---|---|---|
| Admin | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Manager | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Editor | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
| Reporter | ✅ | ✅ | ✅ (create only) | ❌ | ❌ | ❌ |
| Reader | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
Admin
Full project control with all permissions. Capabilities:- ✅ All Manager permissions
- ✅ Create and delete project secrets
- ✅ Delete unnecessary file versions
- ✅ Full administrative access
- Project owners
- Senior team leads
- Users who need full control
qfieldcloud/core/models.py:1982
Manager
Project management capabilities without full admin rights. Capabilities:- ✅ View and retrieve project
- ✅ Update project settings
- ✅ Delete project
- ✅ Upload and create files
- ✅ Delete files
- ✅ Create and read deltas (data changes)
- ✅ Apply pending deltas
- ✅ Set delta status
- ✅ Read jobs
- ✅ Add/remove collaborators
- ✅ Update collaborator roles
- ✅ Modify QGIS project files
- ✅ Read packages
- ❌ Manage project secrets (admin only)
- ❌ Delete unnecessary file versions (admin only)
- Team leads
- Project coordinators
- Power users who manage day-to-day operations
qfieldcloud/core/permissions_utils.py:279-298
Editor
Data editing permissions with file management. Capabilities:- ✅ View and retrieve project
- ✅ Upload and create files
- ✅ Delete files
- ✅ Create and read deltas
- ✅ Read jobs
- ✅ Modify QGIS project files (if not restricted)
- ✅ Read packages
- ❌ Update project settings
- ❌ Delete project
- ❌ Manage collaborators
- ❌ Apply or set delta status
- ❌ Modify restricted project files
- Field workers
- Data collectors
- Users who edit and upload data
qfieldcloud/core/permissions_utils.py:301-335
Reporter
Data collection role with limited editing. Capabilities:- ✅ View and retrieve project
- ✅ Upload files
- ✅ Create new features (deltas with method=Create)
- ✅ Read deltas
- ✅ Read jobs
- ✅ Modify QGIS project files (if not restricted)
- ✅ Read packages
- ❌ Delete or edit existing data (except create new)
- ❌ Delete files
- ❌ Update project settings
- ❌ Manage collaborators
- Survey participants
- Data contributors
- Users who only add new data
Reader
Read-only access to project data. Capabilities:- ✅ View and retrieve project
- ✅ Read files
- ✅ Download packages
- ❌ Upload or create files
- ❌ Edit or delete data
- ❌ Create deltas
- ❌ Update project settings
- ❌ View jobs (requires Reporter or above)
- Stakeholders
- Viewers
- Users who only need to see the data
qfieldcloud/core/permissions_utils.py:345-356
Role Origins
Users can have project access through different origins:Project Owner
Automatic Admin role for project owner.- Origin:
project_owner - Role: Admin
- Cannot be removed as collaborator
Organization Owner
For projects owned by organizations, the organization owner gets automatic Admin role.- Origin:
organization_owner - Role: Admin
- Automatically granted
Organization Admin
Organization admins get Admin role on all organization projects.- Origin:
organization_admin - Role: Admin
- Automatically granted
Collaborator
Directly added to the project with a specific role.- Origin:
collaborator - Role: Any (Admin, Manager, Editor, Reporter, Reader)
- Explicitly assigned
Team Member
Member of a team that’s added as a collaborator.- Origin:
team_member - Role: Inherited from team’s assigned role
- Automatically granted when team is added
Public
For public projects, all authenticated users.- Origin:
public - Role: Reader
- Automatically granted
qfieldcloud/core/models.py:968
Permission Checks
The system provides helper functions to check permissions:Organization Permissions
qfieldcloud/core/permissions_utils.py:130-156
Project Permissions
qfieldcloud/core/permissions_utils.py:264-427
Special Permission Cases
Restricted Project Files
Projects can enablehas_restricted_projectfiles to limit QGIS project file modifications:
qfieldcloud/core/permissions_utils.py:314-334
Collaborator Limits
Private projects have collaborator limits based on the owner’s subscription:max_premium_collaborators_per_private_project: Maximum collaborators allowed-1means unlimited collaborators- Only premium users can be added to private projects
- Teams count separately and are always allowed
- Public projects have no collaborator limits
qfieldcloud/core/permissions_utils.py:623-689
Incognito Collaborators
Collaborators can be marked as “incognito”:- Work normally with full permissions
- Not listed in UI
- Not counted in billing/active user metrics
- Used for support staff access
qfieldcloud/core/models.py:2014-2019
API Examples
Check User’s Project Role
Add Collaborator with Role
Update Collaborator Role
Best Practices
Use least privilege principle
Use least privilege principle
Assign the minimum role needed for users to perform their tasks. Start with Reader or Reporter and elevate only when necessary.
Leverage teams for groups
Leverage teams for groups
Instead of adding many individual collaborators, create teams and assign role to the team. This simplifies management.
Reserve Admin for project owners
Reserve Admin for project owners
Only grant Admin role to users who need full control. Use Manager for day-to-day operations.
Use Reporter for data collection
Use Reporter for data collection
Field workers who only add new observations should be Reporters, not Editors, to prevent accidental data modification.
Enable restricted project files
Enable restricted project files
For production projects, enable
has_restricted_projectfiles to prevent accidental modification of QGIS project configuration.Monitor collaborator limits
Monitor collaborator limits
Track collaborator count against plan limits for private projects to avoid disruption.
Permission Matrix
Organization Permissions
| Action | Owner | Admin | Member |
|---|---|---|---|
| View organization | ✅ | ✅ | ✅ |
| Update settings | ✅ | ✅ | ❌ |
| Manage billing | ✅ | ❌ | ❌ |
| Add/remove members | ✅ | ✅ | ❌ |
| Create teams | ✅ | ✅ | ❌ |
| Create projects | ✅ | ✅ | ❌ |
| Delete organization | ✅ | ❌ | ❌ |
| Transfer ownership | ✅ | ❌ | ❌ |
| Manage secrets | ✅ | ✅ | ❌ |
Project Permissions
| Action | Admin | Manager | Editor | Reporter | Reader |
|---|---|---|---|---|---|
| View project | ✅ | ✅ | ✅ | ✅ | ✅ |
| Update settings | ✅ | ✅ | ❌ | ❌ | ❌ |
| Delete project | ✅ | ✅ | ❌ | ❌ | ❌ |
| Upload files | ✅ | ✅ | ✅ | ✅ | ❌ |
| Delete files | ✅ | ✅ | ✅ | ❌ | ❌ |
| Read files | ✅ | ✅ | ✅ | ✅ | ✅ |
| Create features | ✅ | ✅ | ✅ | ✅ | ❌ |
| Edit features | ✅ | ✅ | ✅ | ❌ | ❌ |
| Delete features | ✅ | ✅ | ✅ | ❌ | ❌ |
| Apply deltas | ✅ | ✅ | ❌ | ❌ | ❌ |
| Manage collaborators | ✅ | ✅ | ❌ | ❌ | ❌ |
| Manage secrets | ✅ | ❌ | ❌ | ❌ | ❌ |
| View jobs | ✅ | ✅ | ✅ | ✅ | ❌ |
Related Topics
Organizations
Learn about organization management
Members
Manage organization members and teams