上一章我们把表单和详情页做好了,工单系统已经能正常录入和查看数据。但现在有个问题——所有人登录后看到的东西都一样。提交工单的普通员工能看到管理页面,技术员能删除分类……这可不行。
这一章,我们来给系统加上"门禁":不同的人,看到不同的菜单,操作不同的数据。
在 NocoBase 里,角色就是一组权限的集合。你不需要给每个用户单独配权限,而是先定义好几个角色,再把用户丢进对应的角色里。
NocoBase 安装后自带三个角色:
但这三个内置角色不够用。我们的工单系统需要更细的划分,所以接下来我们创建 3 个自定义角色。
打开右上角设置菜单,进入 用户和权限 → 角色管理。
点击 添加角色,依次创建:
| 角色名称 | 角色标识 | 说明 |
|---|---|---|
| 管理员 | admin-helpdesk | 能看所有工单,管理分类,分配处理人 |
| 技术员 | technician | 只看分配给自己的工单,能处理和关闭 |
| 普通用户 | user | 只能提交工单,只能看自己提交的 |

角色标识是系统内部用的唯一 ID,创建后不能改,建议用英文小写。角色名称可以随时修改。

创建完成后,角色列表里应该能看到我们新建的三个角色。
角色建好了,接下来告诉系统:每个角色能看到哪些菜单。
点击某个角色进入权限配置页面,找到 菜单访问权限 选项卡。这里会列出系统中所有的菜单项,勾选就是允许访问,取消勾选就是隐藏。
管理员(admin-helpdesk):全部勾选
技术员(technician):部分勾选
普通用户(user):最少权限

小提示:NocoBase 有个方便的设置——"新增菜单项默认允许访问"。如果你不想每次加新页面都手动勾选,可以给管理员角色开启这个选项。对于普通用户角色,建议关闭它。
菜单权限管的是"能不能进这个页面",数据权限管的是"进了页面后能看到哪些数据"。
关键概念:数据范围(Data Scope)。
在角色的权限配置中,切换到 数据表操作权限 选项卡。找到我们的"工单"表,点击进入单独配置。

同理,把"编辑"和"删除"权限也设为 自己的数据(或者干脆不给删除权限)。

关于全局配置:如果只配置工单表,可能导致其他数据、配置项(比如分类表、处理人)看不到。我们目前的系统比较简单,本次在全局中直接勾选 “查看所有数据”,针对数据范围敏感的表,再单独配置权限


实用技巧:还可以在表格区块上设置默认筛选条件来辅助权限控制,比如"处理人 = 当前用户"。不过页面配置是全局生效的,管理员也会被限制。折中方案:配置"处理人 = 当前用户 或 提交人 = 当前用户",兼容普通用户和技术员;管理员如需全局视图,再单独建一个不带筛选的页面。

管理员角色的数据范围选择 所有数据,所有操作都打开。简单直接。

权限配好之前,我们先给工单列表加一个实用功能:分配处理人。管理员可以直接在列表中把工单分配给某个技术员,不用进入编辑页面改一堆字段。
实现很简单——在表格操作列加一个自定义弹窗按钮:


由于只有一个简单的分配信息,我们采用简单的弹窗更合适,而不是抽屉,按钮右上角选择 弹窗设置,选择 对话框 较窄 > 确认


这样,管理员在工单列表中点击「分配」,弹出一个极简表单,选择处理人后提交即可。快速、精准,不会误改其他字段。
「分配」按钮只有管理员才需要用,普通用户和技术员看到它反而造成困惑。我们可以用联动规则根据当前用户的角色来控制按钮的显示/隐藏:
这样,只有管理员角色的用户能看到「分配」按钮,其他角色登录后这个按钮自动隐藏。

权限配好了,我们来实际验证一下。
进入 用户管理(设置中心或者你之前搭好的用户管理页面),创建 3 个测试用户:
| 用户名 | 角色 |
|---|---|
| Alice | 管理员(admin-helpdesk) |
| Bob | 技术员(technician) |
| Charlie | 普通用户(user) |

创建好之后,分别用这三个账号登录系统,检查两件事:
1. 菜单是否按预期显示?



2. 数据是否按预期过滤?
是不是很酷?同一个系统,不同用户看到完全不同的内容!这就是权限的力量。
这一章我们完成了工单系统的权限体系:
到这里,工单系统已经像模像样了——能录入、能查看、能按角色控制访问。但所有操作都是手动的。
下一章我们来学 工作流(Workflow)——让系统自动帮我们干活。比如工单提交后自动通知处理人,状态变更时自动记录日志。