Skip to content

fix(rbac): редактор может управлять Компаниями и видит Реестр (2.4.2) - #20

Merged
MaximilianKaufmannCode merged 1 commit into
mainfrom
fix/editor-companies-access
Jun 30, 2026
Merged

fix(rbac): редактор может управлять Компаниями и видит Реестр (2.4.2)#20
MaximilianKaufmannCode merged 1 commit into
mainfrom
fix/editor-companies-access

Conversation

@MaximilianKaufmannCode

Copy link
Copy Markdown
Owner

Проблема

Пользователь с ролью Редактор видел в меню только «Профиль» и не мог добавлять Компании — хотя бэкенд с 2.3.0 разрешает редактору создавать компании (POST /api/v1/assets = editor+admin). Страница «Компании» и её пункт меню были закрыты гардом role="admin", а ссылки на «Реестр» в меню не было вовсе → у редактора не было навигации к своему рабочему пространству.

Диагностика

  • Бэкенд (web-bff) пускает редактора: GET /documents|/assets|/document-types без role-гейта; POST /assets = editor+admin; POST /documents = editor+admin. Причина не в бэке.
  • Фронтенд: /registry без role-гейта (редактор технически мог зайти через логотип/лендинг), но в меню для редактора был только «Профиль»; страница /admin/assets закрыта RoleGuard role="admin".

Исправление (только фронтенд; бэкенд/схема/контракт не менялись)

  • RoleGuard теперь принимает несколько ролей: role={["admin","editor"]}.
  • /admin/assets (Компании) открыта редактору; в AssetsPage колонка действий (редактирование/архив) скрыта для не-админов — зеркалит RBAC бэкенда (создание = editor+admin, правка/архив = admin). Редактор создаёт + просматривает; админ дополнительно правит/архивирует.
  • Меню Header: пункт «Реестр» для всех не-super_admin ролей и «Компании» для редакторов+админов (вынесен из admin-only блока).
  • Типы документов остаются только у администратора (тип задаёт глобальное расписание уведомлений) — по согласованию; редактор выбирает из готовых типов при создании документа.

Матрица меню после фикса

Роль Пункты меню
Редактор Реестр · Профиль · Компании
Наблюдатель Реестр · Профиль
Администратор Реестр · Профиль · Компании · Пользователи · Типы · Каналы · Календарь · История
Супер-админ Профиль · Системная панель

Проверки

  • tsc + biome чисто; 0 регрессий (8 падающих registry-тестов — пред-существующие useSearch-mock, подтверждено git stash).
  • Собрано и задеплоено на PreProd (atomic swap): version.json = 2.4.2, новый бандл содержит «Реестр»/«Компании», login 200 / API 401.

PATCH — устранение дефекта доступа без изменения контракта.

🤖 Generated with Claude Code

A user with the Editor role saw only «Профиль» in the menu and could not add
companies, even though the backend has allowed editors to create companies
since 2.3.0 (POST /api/v1/assets = editor+admin). The «Компании» page and its
menu link were gated admin-only, and there was no Registry link in the menu —
so editors had no navigation to their workspace.

Frontend-only fix (backend, schema, contracts unchanged):
- RoleGuard now accepts multiple roles (`role={["admin","editor"]}`).
- /admin/assets (Companies) opens to editors; AssetsPage hides the edit/archive
  «Действия» column for non-admins (mirrors backend: create=editor+admin,
  edit/archive=admin). Editors create + view; admins also edit/archive.
- Header menu: a «Реестр» link for all non-super_admin roles, and «Компании»
  for editors + admins (moved out of the admin-only block).
- Document Types stay admin-only by design (a type sets a global notification
  schedule); editors still pick from existing types when creating a document.

Verified: tsc + biome clean; no test regressions (the 8 failing registry tests
are pre-existing useSearch-mock failures, confirmed via git stash). Built and
deployed to PreProd (version.json 2.4.2, login 200).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@MaximilianKaufmannCode
MaximilianKaufmannCode merged commit 2724289 into main Jun 30, 2026
3 of 4 checks passed
@MaximilianKaufmannCode
MaximilianKaufmannCode deleted the fix/editor-companies-access branch June 30, 2026 08:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant