收银员角色与权限
HandyCafe 使用基于角色的访问控制(RBAC)管理每位员工在系统中的可见内容和操作权限。每位收银员分配一个角色,该角色决定其在整个应用中的确切权限。
角色类型
HandyCafe 提供三种角色类型:
管理员
管理员角色授予系统中所有功能的不受限制访问权限。管理员可以管理收银员、查看所有报表、修改设置并执行任何操作。此角色面向需要完全控制权的网吧业主和高级管理人员。
系统中始终至少有一个管理员账户。管理员角色不可删除,其权限不可缩减。
默认
默认角色不分配任何特殊权限。拥有默认角色的收银员可以登录并执行基本操作,但无法访问会员管理、报表或主机配置等受限区域。可用作只需处理基本任务的新员工起始角色。
自定义
自定义角色允许您精确定义收银员拥有哪些权限。选择名称、设置级别,然后逐一勾选六个类别中的权限标志。这为您提供了对每位员工访问权限的精细化控制。
权限类别
HandyCafe 有 22 个独立的权限标志,分为 6 个类别。每个标志控制系统中的一个特定操作或视图。
1. 身份验证(1 个标志)
| 标志 | 说明 |
|---|---|
| CLIENT_LOGIN | 允许收银员登录客户端 PC(代替顾客开启时段) |
没有此权限,收银员无法开启或管理客户端时段。
2. 会员(6 个标志)
| 标志 | 说明 |
|---|---|
| VIEW | 查看会员列表和会员详情 |
| ADD | 创建新的会员账户 |
| DELETE | 从系统中删除会员账户 |
| UPDATE | 编辑现有会员信息(名称、余额等) |
| DISPLAY_EMAIL | 在会员列表中查看会员电子邮箱 |
| DISPLAY_GSM | 在会员列表中查看会员手机号码 |
仅拥有 VIEW 权限的收银员可以浏览会员列表,但无法创建、编辑或删除任何会员。DISPLAY_EMAIL 和 DISPLAY_GSM 标志控制敏感联系信息是否可见。这对隐私合规很有用,因为并非所有员工都需要查看个人数据。
3. 主机(4 个标志)
| 标志 | 说明 |
|---|---|
| VIEW | 查看主机页面和主机状态卡片 |
| ADD | 在系统中注册新的游戏主机 |
| DELETE | 从系统中删除主机 |
| UPDATE | 编辑主机详情(名称、MAC 地址、定价) |
4. 日志(4 个标志)
| 标志 | 说明 |
|---|---|
| VIEW | 访问日志页面 |
| DISPLAY_FULL | 查看完整的日志历史(所有日期) |
| DISPLAY_TODAY | 仅查看今日的日志条目 |
| DELETE | 删除日志条目 |
如果收银员拥有 VIEW 和 DISPLAY_TODAY 但没有 DISPLAY_FULL,则只能查看当天的日志条目。这对需要监控当前活动但无需查看历史记录的班次主管很有用。
5. 报表(3 个标志)
| 标志 | 说明 |
|---|---|
| PAGE_VIEW | 访问报表/财务报表页面 |
| DISPLAY_FULL | 查看完整的报表历史(所有日期) |
| DISPLAY_TODAY | 仅查看今日的报表数据 |
与日志类似,报表权限让您控制员工是否可以查看完整财务历史或仅查看当天数据。拥有 PAGE_VIEW 和 DISPLAY_TODAY 的收银员可以查看自己班次的交易,但无法访问历史营收数据。
6. 支付方式(4 个标志)
| 标志 | 说明 |
|---|---|
| MANAGE | 访问支付方式管理区域 |
| ADD | 创建新的支付方式(现金、刷卡、移动支付等) |
| DELETE | 从系统中删除支付方式 |
| UPDATE | 编辑现有支付方式的详情 |
汇总
| 类别 | 标志 | 总数 |
|---|---|---|
| 身份验证 | CLIENT_LOGIN | 1 |
| 会员 | VIEW, ADD, DELETE, UPDATE, DISPLAY_EMAIL, DISPLAY_GSM | 6 |
| 主机 | VIEW, ADD, DELETE, UPDATE | 4 |
| 日志 | VIEW, DISPLAY_FULL, DISPLAY_TODAY, DELETE | 4 |
| 报表 | PAGE_VIEW, DISPLAY_FULL, DISPLAY_TODAY | 3 |
| 支付方式 | MANAGE, ADD, DELETE, UPDATE | 4 |
| 合计 | 22 |
权限工作原理
每个权限类别有一组独立的权限标志。每个标志可以在角色编辑器中通过复选框独立启用或禁用。
UI 为每个权限提供复选框。只需勾选或取消勾选您想授予或撤销的权限即可。系统自动处理底层存储,您无需手动计算任何值。
例如,在"会员"类别中,您可以独立启用或禁用:VIEW、ADD、DELETE、UPDATE、DISPLAY_EMAIL 和 DISPLAY_GSM。仅勾选了 VIEW 和 UPDATE 的收银员可以查看和编辑会员,但无法添加或删除。
创建收银员账户
- 在服务端应用中导航到管理 > 收银员。
- 点击添加收银员按钮。
- 输入收银员的用户名。这是他们登录时使用的凭证。
- 设置密码。选择强密码。此账户可能有权访问财务数据和客户信息。
- 从下拉菜单中选择一个角色。可选择管理员、默认或您创建的任何自定义角色。
- 点击保存创建账户。
新收银员现在可以使用其凭证登录 HandyCafe 服务端。
创建自定义角色
- 在服务端应用中导航到管理 > 收银员角色。
- 点击添加角色按钮。
- 输入角色名称(如"班次主管"、"初级收银员"、"夜班员工")。
- 设置角色级别。级别越高表示权限越大。用于显示排序和组织层级。
- 在所有六个类别中逐一勾选或取消勾选权限。每个复选框对应 22 个权限设置中的一个。
- 点击保存创建角色。
创建后,可以将此角色分配给任何收银员账户。
后端强制执行
权限在服务端强制执行,不仅是在 UI 中隐藏。即使有人绕过客户端界面或篡改前端代码,服务端在执行任何请求前都会验证收银员的角色权限。
这意味着:
- 没有 MEMBER_DELETE 权限的收银员无法删除会员,即使直接发送 API 请求也不行。
- 没有 REPORT_DISPLAY_FULL 权限的收银员无法检索历史报表数据,无论通过何种方式访问系统。
- 所有权限检查都在 Rust 后端中完成,在执行任何数据库操作之前。
安全:频率限制
为防止暴力破解攻击,HandyCafe 强制执行登录频率限制:
- 10 分钟内 5 次失败登录尝试触发自动锁定。
- 锁定持续 15 分钟,期间不接受该账户的任何登录尝试。
- 锁定期满后,收银员可以重新尝试。
此规则同时适用于服务端登录界面和客户端 PC 上的收银员登录。
班次管理
每位收银员的活动在整个班次中被独立追踪:
- 所有交易(时段收款、订单收款等)都记录着收银员的身份。
- 收银台为每位收银员的班次分别追踪期初和期末余额。
- 可按收银员生成班次报表,准确显示他们在班次内处理了多少收入。
- 收银员登出时,其班次关闭,摘要可供查看。
按收银员追踪确保了可问责性,使班次结束时的差异调查更加容易。
权限示例
场景 1:基础收银员 只需要开启/结束时段和收款的新员工。分配仅启用 CLIENT_LOGIN 的自定义角色。他们无法查看会员、报表、日志或主机。
场景 2:班次主管 负责现场管理的资深员工。分配拥有 CLIENT_LOGIN、MEMBER_VIEW、MEMBER_UPDATE、CONSOLE_VIEW、REPORT_PAGE_VIEW 和 REPORT_DISPLAY_TODAY 的角色。他们可以管理时段、查看(但不能删除)会员、查看主机和查看今日营收,但无法访问完整历史报表或修改支付方式。
场景 3:夜班经理 独立管理夜间班次的经理。授予除 MEMBER_DELETE、LOG_DELETE 和 PAYMENT_METHOD_DELETE 以外的大部分权限。他们可以在班次内管理一切,但无法永久删除关键数据。
场景 4:隐私限制员工 不应查看客户联系方式的收银员。创建启用 MEMBER_VIEW 但禁用 DISPLAY_EMAIL 和 DISPLAY_GSM 的角色。他们可以按名称查找会员,但个人联系信息被隐藏。