Кастомные должности
Свои роли с гранулярным набором прав по группам сущностей. Сейчас работают как «расширенный VIEWER» — реальное применение прав на дорожной карте.
Как создать
- Команда → кнопка «+ Добавить должность».
- В модалке:
- Название — например, «Бухгалтер», «Менеджер по продажам».
- Права — чекбоксы по группам.
- Сохранить.
Должность появится в списке. После создания её можно выбрать в дропдауне ролей при приглашении сотрудника.
Группы прав
При создании должности доступны 10 групп, каждая включает 2–3 разрешения (просмотр / редактирование / удаление):
| Группа | Что внутри | |---|---| | Операции | Создание, редактирование, удаление операций | | Счета | Создание, редактирование, архивирование счетов | | Категории | Управление категориями и иерархией | | Контрагенты | Создание и редактирование | | Проекты | Управление проектами | | Теги | Управление тегами | | Отчёты | Просмотр CashFlow, P&L, Balance, ... | | Аналитика | Расширенные отчёты (Performance, Projects) | | Команда | Просмотр / приглашение / удаление сотрудников | | Настройки | Биллинг, компания, ... |
Всего 22 разрешения.
Карточка должности
В списке должностей карточка показывает:
- Имя.
- Чипы первых 3 групп прав (например, «Операции · Счета · Отчёты»).
- «и ещё N» если групп больше.
- Счётчик прав (например, «12 прав»).
Текущее ограничение — важно
Сейчас кастомные должности под капотом работают как стандартный VIEWER. Что это значит:
- Галочки в модалке создания должности сохраняются.
- В карточке должности они отображаются.
- Сотрудник с кастомной должностью видит что у него такая-то роль с такими-то правами.
- Но RBAC middleware всё равно проверяет роль
VIEWER— кастомные права в проверке доступа пока не учитываются.
То есть гранулярные права — пока декларативны, а не функциональны. Реальная защита у вас на уровне VIEWER (read-only).
Это видно в карточке должности — есть фиолетовый бейдж «На VIEWER-уровне» как напоминание.
Когда это поправят
В TODO Реальное применение прав CustomRole (пункт 28). Реализация ожидается через:
- Либо добавление
permissionsJSON в JWT токен и заменуrequireRole(level)наrequirePermission(key)в API-роутах. - Либо генерацию минимального enum-уровня из набора прав (например, «есть права на удаление операций → даём ADMIN»).
Что использовать пока
- Если нужно read-only для бухгалтера — стандартная роль
VIEWER. - Если нужно полный доступ кроме удаления — стандартная роль
EDITOR. - Если нужно всё кроме настроек — стандартная роль
ADMIN. - Если стандартных не хватает и нужны более сложные комбинации — пока подождите внедрения, либо используйте
EDITOR+ договорённости с командой о том, что они не делают.
Удаление должности
Команда → должности → Удалить. Сотрудники, которые были назначены на эту должность, переключаются в роль VIEWER.