В SaaS и B2B-сервисах один пользователь может работать с несколькими компаниями. Если переключение ломается, он видит не те данные или вообще теряет доступ.

В чем проблема

Ошибка появляется из-за неправильного tenant_id в сессии, кеша текущей организации, неполной проверки ролей, неверной фильтрации запросов или frontend-состояния.

Что проверяю

  • Какие компании привязаны к пользователю.
  • Где хранится текущая компания.
  • Все ли запросы фильтруются по tenant_id.
  • Сбрасывается ли кеш после переключения.
  • Не смешиваются ли роли в разных организациях.

Как исправляю

Я проверяю переключение как критичный security-сценарий: пользователь должен видеть только данные выбранной компании.

  • Воспроизвожу переключение на тестовом пользователе.
  • Проверяю session/current tenant.
  • Исправляю backend-фильтры.
  • Синхронизирую frontend-состояние.
  • Тестирую роли и прямые ссылки.

Что получает заказчик

  • Пользователь переключается между компаниями.
  • Данные разных организаций не смешиваются.
  • Роли работают отдельно для каждой компании.
  • Снижается риск утечки чужих данных.

Что нужно для старта

  • Тестовый пользователь с несколькими компаниями.
  • Описание ролей.
  • Доступ к backend/frontend.
  • Пример экрана, где переключение не работает.

Вопросы и ответы

Можно ли хранить company_id только на frontend?

Нет. Backend обязан проверять доступ к каждой компании.

Почему после переключения остаются старые данные?

Часто виноват кеш, глобальное состояние или запросы без tenant_id.

Нужна похожая задача?

Напишите, что именно сломалось или что нужно запустить. Я разберу симптомы, проверю техническую причину и предложу понятный план работ с адекватными сроками.