Подсистема полномочий

Подсистема полномочий на основе ролей позволяет разделить права на операции с данными. Например, можно настроить так, что пользователь с ролью администратора сможет изменять и удалять все типы объектов данных, а пользователь с ролью оператор сможет работать только с одним типом данных, а остальные типы будут доступны только на чтение. Система ролей настраивается динамически и не требует перекомпиляции приложения. В приложении регистрируются типы данных и пользователи. Соответствие задаётся динамически и хранится в базе данных.

Настройки полномочий во Flexberry Designer

Для классов, которые должны контролироваться подсистемой полномочий, на диаграмме классов нужно в настройках каждого класса на вкладке Полномочия выбрать опцию this настройки Access check type. В этом случае для указанного класса в код C# сгенерируется атрибут AccessType, который используется при проверке полномочий. Соответственно, не забывайте перегенерировать объекты данных после изменения этой настройки.

Настройка хранилища

Метаданные полномочий располагаются в специальных таблицах в БД. Система полномочий работает с этими метаданными и именно по ним определяет права пользователей. Данные таблицы можно вынести в отдельную БД (например, более защищённую) или разместить в основной БД.
Во Flexberry Designer на форме настройки строки соединения для каждого из хранилищ есть специальный флаг БД полномочий в БД приложения, установив который можно получить таблицы полномочий в сгенерированном SQL DDL скрипте.
При генерации скрипта полномочий также генерируются инструкции для добавления в БД определений классов данных. Добавляются только те классы, у которых установлен Access check type в значение this. Соответственно после изменения этой настройки также нужно учитывать необходимость перегенерации SQL DDL.

Настройка бакенда

Для работы системы полномочий в бакенд нужно установить NuGet-пакет NewPlatform.Flexberry.Security. Обратите внимание на версию Flexberry ORM - она есть в зависимостях.
Подсистема полномочий по умолчанию ограничивает доступ на уровне Flexberry ORM: если у пользователя нет прав на ту или иную операцию, то ORM не выполнит её (не будет читать данные, если на это нет прав). Дополнительно для чувствительных данных или сертифицируемых систем можно настроить ограничение на уровне хранилища, которое прозрачным образом реализует ту же самую логику.

Настройка фронтенда

Для настройки полномочий в разрабатываемом приложении нужно добавить формы из подсистемы полномочий. Для Flexberry Ember доступен аддон: ember-flexberry-security, который нужно установить в приложение и прописать все необходимые роуты. Данный аддон позволяет заводить новых пользователей и назначать им полномочия.