Skip to content

Права и роли: что реально видно на фронте ​

Проверено входом под каждым seed-пользователем 16.07.2026. Формальная матрица прав — в rbac_matrix, концепция — в Безопасность & RBAC.

Как устроена проверка ​

  • Бэкенд: permission-коды (projects.manage, logistics.manage, chat.write, …) по RBAC-ролям + Casbin по отделам + фильтр участия в проекте.
  • Фронт: навигация и элементы гейтятся CASL-парами action/subject (read dashboard, read projects, …) из src/navigation/vertical/index.ts.

Что видит каждая роль (навигация) ​

Разделadminmanager / logist / engineer / accountant / lawyer / executor (seed)
Главная (дашборд)✅✅
Проекты, Компании, Контакты✅✅
Задачи, Справочники (Оборудование, Локации), Логистика, Командировки✅✅
Оргструктура, Пользователи, Роли и права, Реквизиты, Отделы, Должности✅❌ (скрыто)
Касса / Платежи / АРМ бухгалтеранет в UIнет в UI
Реестр договоров / АРМ юристанет в UIнет в UI
Зарплата (payroll)нет в UIнет в UI
Чатыплавающая кнопка (пункта меню нет)то же

Главный вывод ​

Все seed-пользователи — менеджеры

У logist@, engineer@, accountant@, lawyer@, executor@ системная роль — manager. Функция (global_function) и роль в команде проекта на видимость разделов почти не влияют. Поэтому:

  • инженер и бухгалтер видят «Логистику», «Компании», справочники и успешно дергают GET /logistics, GET /equipment и т.д. — это не дыра в правах, а следствие роли manager;
  • проверить фронт за «чистого» инженера (role=engineer), сотрудника (employee) или директора (director) через seed нельзя.

Доработка сида: создавать пользователей с настоящими ролями (engineer, employee, accountant, lawyer, director), чтобы регресс прав был воспроизводим. Иначе клиент на тесте увидит «у всех всё есть».

Что проверено и работает ​

  • Разделы «Администрирование» скрываются у не-админов — ✅.
  • Фильтр участия: менеджер видит проект, где он в команде/ответственный — ✅. Seed теперь позволяет отдельно проверять employee/engineer без manager-bypass.
  • Статус участника команды «Ожидает» после добавления — механика подтверждения участия (team_requests) на бэке есть; в UI подтверждение приглашения не найдено — уточнить, где участник должен принимать приглашение.
  • Логист видит «Заявки от менеджеров» и может открывать заявки любого проекта (RBAC-роль logistician по global_function) — ✅.

Замечания к правам ​

  1. АРМ бухгалтера/юриста и payroll не выведены на фронт вообще — бэкенд-модули и permissions (accounting.view/manage, legal.view/manage, payroll.*) существуют, документация описывает АРМы, но в навигации их нет ни у одной роли. Либо выводить разделы, либо помечать в доках как «не реализовано в UI».
  2. Генерация документов: hasDocumentPrivileges пускает admin или обладателя documents.manage. Permission уже заведён миграцией 0057 и выдан admin, manager, head_of_department; ветка project_manager удалена.
  3. Список «Ответственный» в задачах и «Водитель» в логистике не ограничены командой проекта/ролями — можно назначить кого угодно.
  4. Дашборд («Выезды», «Объём работ», «Прогресс проектов») показывает одинаковые цифры всем ролям — проверить, что данные не глобальные, а по scope пользователя (для manager-ролей выглядит как глобальная статистика).

Загружаем документацию…