Data scope by department / role

First of all, thank you to the NocoBase team for building such a flexible and powerful platform, it has been a great foundation for our internal systems.

In Roles & Permissions → Configure permission, the Data scope dropdown offers only two options:

  • All records
  • Own records

With only these two options, there is no way to express the most common organizational access pattern: “users can see records belonging to their own department.”

Collections are shared across the entire organization all departments write to the same tables (e.g. one CBNV collection for all employees, one Salary collection for all salary records). There is no mechanism to partition collections by department / role at the data source level.

This means the only two access patterns currently possible are:

  • See everything (All records): no departmental boundary
  • See only what I created (Own records): too restrictive for most workflows

What we would like

Additional data scope options:

1. By department:

  • Records in my department
  • Records in my department and sub-departments

2. By role:

  • Records created by users with the same role
  • Records created by users with a specific role (select which role)

3. Ideally (custom filter with user context variables):

  • Allow the data scope to reference attributes of the current user, e.g. record.createdBy.department = currentUser.department
  • This would cover all the above cases and any organization-specific pattern

The Departments plugin already stores the org structure and user-department relationships. The Roles system already stores user-role relationships. The missing piece is connecting that data to the data scope evaluation.

Why this matters

Since collections are shared (not partitioned by department), the data scope dropdown is the only control point for departmental data isolation. Without a department-aware option, organizations are forced to either:

  • Grant All records and accept that everyone sees everything, or
  • Use Own records and break workflows that require team-level visibility, or
  • Duplicate roles per department (our deployment has ~20+ roles following a <dept code> - <job title> pattern), which makes reorganizations extremely high-risk

We understand that ACL is a complex area and this may not be a simple change. We’re raising this because we believe department/role-based data scoping would benefit a wide range of organizations using NocoBase. If there’s an existing approach we’ve overlooked, we’d love to hear about it.

Thanks again for your work on this project.

The dropdown in your screenshot is the General permission policy, which intentionally provides only All records and Own records. For department-based access, configure the affected collection separately: use the Individual permission policy, then add a custom data scope for View/Update/Delete.