Intro
Описанный паттерн позволяет реализовать гибкую систему доступов на стороне клиента. Паттерн учитывает особенности реализа ции доступов на клиенте.
Необходимо применять когда
- В системе уже реализована какая-либо система доступов без централизованного управления на клиенте
- API предоставляет сведения о ролях. Паттерн работает в связке с ролевой моделью
- API предоставляет сведения о доступах. Паттерн расширяет на клиенте доступы, полученные из API
- На клиенте необходимо по условию (любому) закрывать доступ к части функционала
- Бизнес-требования описывают доступность функционала при определенных условиях (роль, сведения об оплате...)
Применение паттерна позволяет
- Уменьшить затраты на разработку системы доступов
- Иметь единую реализацию системы доступов во всех приложениях компании
- Централизованно развивать паттерн
- Избежать повторения одних и тех же ошибок реализации в разных приложениях
Паттерн предоставляет
- Удобный и поддерживаемый способ формирования доступов на клиенте
- Систему причин отказа в доступе. Позволяет улучшить UX и DX при работе с доступами: пользователь и разработчик получают конкретную причину отказа в доступе
- Подход загрузки данных для формирования доступов
- Закрытие рутов приложения (RouteGuards)
- Взаимодействие с другими сервисами. Например, FeatureToggle
Готовый пакет @astral/permissions
Для более простой поддержки паттерна был реализован пакет @astral/permissions, который используется в примерах данной документации.