Перейти к основному содержимому

Модель доступа нового интерфейса

Статус: active source of truth для /new. Реализация находится в config/access-control.php, AccessManager, EnforceBusinessAccess и AccessRoleResource.

Принцип

Доступ складывается из двух независимых частей:

  1. Бизнес-возможности — что пользователь может делать: отчёты, финансы, операции, экспорт, администрирование, мониторинг и AI-ассистент.
  2. Маркетплейсы — с данными каких площадок пользователь может работать.

Отдельное право access.cross_marketplace.view разрешает общие страницы, которые показывают несколько площадок одновременно. Без него общий экран доступен только при явном и поддерживаемом MP-фильтре в URL; middleware проверяет прямые переходы, а не только видимость меню.

Преднастроенные роли

РольНазначение
Владелец системы (super_admin)Полный доступ и аварийный bypass
Администратор (administrator)Все бизнес-права, площадки и управление доступом
Руководитель (admin, business_manager)Все площадки, отчёты, финансы, операции, экспорт и Борис; без управления пользователями и системой
Аналитик (analyst)Все площадки, отчёты, финансы, экспорт и Борис; без операционных изменений
Наблюдатель (panel_user, viewer)Просмотр общих отчётов всех площадок и Борис
Сервисный оператор (service_operator)Операции, мониторинг и Борис; без финансов и управления пользователями
Менеджер площадки (*_manager)Отчёты, финансы, операции, экспорт и Борис только для одной площадки
Без доступа (no_access)Ни одного бизнес-права

Доступные площадки: Wildberries, Ozon, Яндекс Маркет, Lamoda, Золотое Яблоко и Amazon.

Администрирование

  • Экран /new/access-roles показывает русские названия прав, описания и отдельные флажки площадок.
  • Основной редактор ролей — /new/access-roles. Технический Filament Shield доступен только пользователю с access.users.manage и расположен последним пунктом сервисной группы; он не является пользовательской моделью доступа.
  • Пользователю назначается одна роль. Предопределённые роли нельзя случайно переименовать или удалить.
  • Идемпотентная синхронизация: php artisan access:sync.
  • Однократная нормализация прежних двойных назначений: php artisan access:sync --normalize-users.

--normalize-users сохраняет приоритет super_adminadminpanel_user; пользователям без роли назначает минимальный рабочий профиль panel_user: дашборд, отчёты всех площадок и Борис без финансов, операций, экспорта, управления пользователями и системных настроек. no_access остаётся только для явной блокировки пользователя администратором.

Инварианты

  • Скрытый пункт меню не является защитой: тот же запрет действует на прямой URL.
  • MP-роль не должна видеть или открывать данные другой площадки.
  • PageSpec-фильтры marketplace/mp показывают только разрешённые площадки; URL и изменённое Livewire-state повторно проверяются перед Data API-запросом.
  • Неотфильтрованный cross-MP отчёт требует access.cross_marketplace.view.
  • Авторизация виджета Бориса требует access.assistant.use.
  • Изменение профилей сопровождается тестом BusinessAccessTest и повторным запуском access:sync на целевой среде.