Skip to main content

Intro

Описанный паттерн позволяет реализовать гибкую систему доступов на стороне клиента. Паттерн учитывает особенности реализации доступов на клиенте.

Необходимо применять когда

  • В системе уже реализована какая-либо система доступов без централизованного управления на клиенте
  • API предоставляет сведения о ролях. Паттерн работает в связке с ролевой моделью
  • API предоставляет сведения о доступах. Паттерн расширяет на клиенте доступы, полученные из API
  • На клиенте необходимо по условию (любому) закрывать доступ к части функционала
  • Бизнес-требования описывают доступность функционала при определенных условиях (роль, сведения об оплате...)

Применение паттерна позволяет

  • Уменьшить затраты на разработку системы доступов
  • Иметь единую реализацию системы доступов во всех приложениях компании
  • Централизованно развивать паттерн
  • Избежать повторения одних и тех же ошибок реализации в разных приложениях

Паттерн предоставляет

  • Удобный и поддерживаемый способ формирования доступов на клиенте
  • Систему причин отказа в доступе. Позволяет улучшить UX и DX при работе с доступами: пользователь и разработчик получают конкретную причину отказа в доступе
  • Подход загрузки данных для формирования доступов
  • Закрытие рутов приложения (RouteGuards)
  • Взаимодействие с другими сервисами. Например, FeatureToggle

Готовый пакет @astral/permissions

Для более простой поддержки паттерна был реализован пакет @astral/permissions, который используется в примерах данной документации.