I’m trying to understand the different options available in Frappe for controlling user access to data and documents. I know there are several mechanisms, but I’m not sure when each one should be used.
Could someone explain, with a little detail, the purpose and typical use cases of the following (and anything else I may have missed)?
-
Role Permissions
-
User Permissions
-
Permission Query Scripts
-
Server Scripts
-
Document Sharing
-
Assignment Rules
-
Workflows and Workflow States
-
Has Permission hooks / Custom permission logic
-
Any other recommended approaches for restricting access
I’m particularly interested in understanding:
-
When to use each option instead of the others.
-
Which methods are best for restricting document visibility versus controlling actions (read, write, submit, etc.).
-
Whether there are any best practices or common pitfalls when designing a permission model in Frappe.
If anyone has a simple explanation or a comparison of these approaches, I’d really appreciate it.