Roles and Access¶
Access Levels¶
Anonymous visitor¶
- Can access public pages like home/login/register
- Cannot access parcel workflows that require login
Authenticated user (public user)¶
- Can access parcels list/map/search
- Visibility limited to:
- own parcels
- parcels marked
is_public=True - Can use list/map selection features
Internal user¶
A user with UserProfile.is_internal_user=True.
- Has normal authenticated capabilities
- Also allowed to open:
- statistics dashboard (
/parcels/analytics/) - reports page (
/parcels/reports/)
Staff user¶
- Can view/manage all visible parcels in the active dataset
- Can use map edit mode and inline update features
- Can access Django admin
Superuser¶
- Full Django admin powers
- Can use setup-groups utility (
/auth/admin/setup-groups/)
Dataset-Aware Scope¶
Most parcel queries are constrained to the active dataset. This applies to list/map/search/selection/statistics/export/upload workflows.
Dataset Roles¶
Dataset access is controlled per dataset for users and groups with this hierarchy:
APPROVER(inherits reviewer/editor/viewer)REVIEWER(inherits editor/viewer)EDITOR(inherits viewer)VIEWER
Effective role is the highest role from:
- direct user grants
- group grants through any group the user belongs to
Users without a grant for a dataset cannot access that dataset, even if they manipulate URLs or API requests.
Active Dataset Selector¶
- Each authenticated user has
UserProfile.active_dataset. - Selector options include only datasets where the user has at least
VIEWER. - If the active dataset becomes invalid (revoked/inactive), middleware clears it and auto-selects the first accessible dataset (stable ordering) when possible.
- If no datasets are accessible, dataset-scoped pages return empty/no-access behavior until access is granted.