Page & Report Permissions
Page & Report Permissions
Standard Frappe permissions work at the DocType level. Pages (custom desk pages like the Setup Wizard) and Reports (Query Reports, Script Reports) have a separate authorization mechanism.
Why pages and reports are different
A Page or Report isn't a DocType — it's a code asset shipped by an app. There's no row-by-row data to apply Role Permissions to. Instead, Frappe attaches a list of allowed roles directly to each Page or Report record.
Configuring Page permissions
- Open the Page record (search "Page" → click the page name)
- In the Roles child table, add the roles allowed to access it
- Users without any matching role get "Not Permitted" when they try to load the URL
Empty Roles list = accessible to all logged-in users.
Configuring Report permissions
Same mechanism on the Report record:
- Open the Report (search "Report" → click the report name)
- Roles child table — add allowed roles
- Empty list = visible to all logged-in users
For Query / Script Reports, you can also restrict at the DocType-permission level — if a user can't read the underlying DocType, they won't see the report's data either, regardless of the report's Roles.
Custom Roles for shipped pages and reports
Standard pages and reports come with default Role lists baked in by their app. To customise without forking:
- Open the Page or Report record and edit the Roles child table directly
- Changes survive app upgrades since they live on the record, not in source code
Restrict by Domain
Pages and Reports can also be filtered by Domain (Manufacturing, Education, etc.) — useful in multi-vertical ERPNext setups so the Manufacturing dashboard doesn't appear for a Services-only site.
Permission Levels do NOT apply
Unlike DocType fields, Pages and Reports don't have permission levels. Access is binary — role match grants full access; no match denies entirely.
Finding the record to edit
- For a Page, the route in the URL (
/app/<page-name>) maps to the Page record name - For a Report, search Awesome Bar for the exact report name to jump to its definition