Роли и права кассиров
HandyCafe использует управление доступом на основе ролей (RBAC) для контроля того, что каждый сотрудник может видеть и делать в системе. Каждому кассиру назначается роль, которая определяет его точные права во всем приложении.
Типы ролей
HandyCafe предоставляет три типа ролей:
Администратор
Роль администратора предоставляет неограниченный доступ ко всем функциям системы. Администраторы могут управлять кассирами, просматривать все отчеты, изменять настройки и выполнять любые операции. Эта роль предназначена для владельцев кафе и старших менеджеров, которым необходим полный контроль.
В системе всегда есть хотя бы один аккаунт администратора. Роль администратора нельзя удалить или сократить ее права.
Стандартная
Стандартная роль не имеет специальных назначенных прав. Кассир со стандартной ролью может войти в систему и выполнять базовые операции, но не имеет доступа к закрытым разделам: управление участниками, отчетность или настройка консолей. Используйте ее как начальную точку для новых сотрудников, которым нужно выполнять только базовые задачи.
Пользовательская
Пользовательские роли позволяют точно определить, какие права имеет кассир. Вы задаете название, устанавливаете уровень и отмечаете или снимаете отметки с отдельных флагов прав в шести категориях. Это обеспечивает детальный контроль доступа для каждого сотрудника.
Категории прав
HandyCafe содержит 22 индивидуальных флага прав, организованных в 6 категорий. Каждый флаг управляет конкретным действием или представлением в системе.
1. Аутентификация (1 флаг)
| Флаг | Описание |
|---|---|
| CLIENT_LOGIN | Позволяет кассиру входить на клиентские ПК (запускать сессии от имени клиентов) |
Без этого права кассир не может запускать или управлять клиентскими сессиями.
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 |
Как работают права
Каждая категория прав содержит набор индивидуальных флагов. Каждый флаг можно включить или выключить независимо с помощью флажков в редакторе ролей.
Интерфейс предоставляет флажки для каждого права. Просто отметьте или снимите отметку с прав, которые хотите предоставить или отозвать. Система автоматически обрабатывает внутреннее хранение - вам не нужно вычислять значения вручную.
Например, в категории "Участники" можно независимо включить или отключить: VIEW, ADD, DELETE, UPDATE, DISPLAY_EMAIL и DISPLAY_GSM. Кассир с отмеченными только VIEW и UPDATE может просматривать и редактировать участников, но не может добавлять или удалять их.
Создание аккаунта кассира
- Перейдите в Управление > Кассиры в серверном приложении.
- Нажмите кнопку Добавить кассира.
- Введите имя пользователя кассира. Это имя будет использоваться для входа.
- Задайте пароль. Выберите надежный пароль. Этот аккаунт может иметь доступ к финансовым данным и информации о клиентах.
- Выберите роль из выпадающего списка. Можно выбрать роль администратора, стандартную или любую созданную пользовательскую роль.
- Нажмите Сохранить для создания аккаунта.
Новый кассир теперь может войти в HandyCafe Server с помощью своих учетных данных.
Создание пользовательской роли
- Перейдите в Управление > Роли кассиров в серверном приложении.
- Нажмите кнопку Добавить роль.
- Введите название роли (например, "Сменный старший", "Младший кассир", "Ночной персонал").
- Задайте уровень роли. Более высокие уровни указывают на больший авторитет. Используется для порядка отображения и организационной иерархии.
- Отметьте или снимите отметку с отдельных прав во всех шести категориях. Каждый флажок соответствует одному из 22 параметров прав.
- Нажмите Сохранить для создания роли.
После создания вы можете назначить эту роль любому аккаунту кассира.
Серверное применение прав
Права применяются на стороне сервера, а не только скрываются в интерфейсе. Даже если кто-то обойдет клиентский интерфейс или модифицирует фронтенд-код, сервер проверяет каждый запрос на соответствие правам роли кассира перед выполнением.
Это означает:
- Кассир без MEMBER_DELETE не может удалить участника, даже отправив прямой API-запрос.
- Кассир без REPORT_DISPLAY_FULL не может получить исторические данные отчетов независимо от способа доступа к системе.
- Все проверки прав выполняются в бэкенде на Rust до выполнения любой операции с базой данных.
Безопасность: ограничение частоты запросов
Для защиты от атак перебором HandyCafe применяет ограничение частоты входа:
- 5 неудачных попыток входа в течение 10-минутного окна активируют автоматическую блокировку.
- Блокировка длится 15 минут, в течение которых попытки входа для этого аккаунта не принимаются.
- После истечения периода блокировки кассир может попробовать снова.
Это применяется как к экрану входа на сервере, так и к входу кассира на клиентских ПК.
Управление сменами
Активность каждого кассира отслеживается индивидуально в течение смены:
- Все транзакции (оплата сессий, заказов и т.д.) фиксируются с идентификацией кассира.
- Касса отслеживает начальный и конечный баланс для каждой смены кассира отдельно.
- Отчеты по сменам можно формировать для каждого кассира с точным указанием выручки, обработанной за смену.
- При выходе кассира из системы его смена закрывается и становится доступна сводка для просмотра.
Этот индивидуальный учет обеспечивает подотчетность и позволяет легко выявлять расхождения в конце каждой смены.
Примеры настройки прав
Сценарий 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. Он может искать участников по имени, но персональная контактная информация скрыта.