📄️ Intro
Описанный паттерн позволяет реализовать гибкую систему доступов на стороне клиента.
📄️ Вдохновлено ABAC и XAML
Описанный паттерн берет за основу принципы ABAC (Attribute-Based Access Control) и XAML.
📄️ Единый Permissions Module
Вся логика, относящиеся к доступам, должна находится в модуле permissions:
📄️ Policies. Политики доступов
Policies группируют permissions и решают проблему роста количества permissions в приложении.
📄️ Формирование доступов
Permission - это доступ к функционалу, обусловленный бизнес требованиями.
📄️ Reasons. Причины отказа в доступе
Каждый permission возвращает объект:
📄️ Rules. Переиспользование логики доступов
Rule - это атомарное правило, позволяющее реализовать часть требований для формирования permissions.
📄️ Подготовка данных для доступов
Для формирования любых доступов нужны данные, получаемые из API.
📄️ Route Guards. Доступы к рутам приложения
Route Guard - это react-компонент, позволяющий управлять доступом к руту приложения.
📄️ Принципы тестирования доступов
Функционал доступов обязательно должен быть покрыт тестами.
📄️ Пример реализации паттерна
Permissions Module
📄️ 2FA (Two-factor Auth)
Permissions могут работать сообща с 2FAService.
📄️ Feature Toggle и Permissions
Feature Toggle и Permissions - это две разные концепции.