Дизайнер ролей
Studio предоставляет визуальные инструменты для редактирования параметров ресурсных ролей и ролей уровня строк во время разработки.
Дизайнер ресурсных ролей
Чтобы создать новую ресурсную роль, используйте меню в Окне инструментов Jmix.

В появившемся диалоговом окне введите имя роли и ее код.

Дизайнер ролей интегрирован с редактором кода, который доступен на вкладке Text. Вы можете редактировать исходный код напрямую или использовать для создания кода элементы управления дизайнера.
Вкладка Definition определяет основные атрибуты роли.

Код роли используется при назначении роли пользователям, поэтому его не следует изменять после того, как роль была назначена некоторым пользователям. |
На вкладке User Interface вы можете определить разрешения для элементов меню и экранов.

Дерево слева отображает структуру главного меню, экранов, определенных проектом и экранов, унаследованных от фреймворка и дополнений. В группе All Screens отображаются все оставшиеся экраны приложений, недоступные напрямую через главное меню. Найти нужный экран можно с помощью поля поиска, расположенного над деревом.
Все пункты меню и экраны по умолчанию запрещены. Выбрав элемент слева и Allow в панели справа, вы добавите разрешение на открытие соответствующего пункта меню или экрана.
Используйте панель инструментов над деревом, чтобы развернуть или свернуть его узлы. Кнопка с шестеренкой переключает отображение экранов и пунктов меню, для которых не указаны разрешения.
Флажок Allow all screens полезен, если нужно предоставить доступ ко всем экранам или запретить доступ только к некоторым.
На вкладке Entities можете определить разрешения CRUD для сущностей и атрибутов сущностей.

В таблице панели слева отображаются сущности, определенные в проекте, а также унаследованные от фреймворка и дополнений. Список сущностей можно отфильтровать по имени с помощью поля поиска, расположенного над таблицей.
Панель инструментов над сущностями содержит следующие действия:
-
Current project only – включает отображение унаследованных сущностей.
-
Assigned only – включает отображение сущностей, не имеющих разрешений.
По умолчанию все операции с сущностями запрещены. Используя флажки в таблице, вы можете разрешить определенные операции для выбранной сущности.
В таблице справа отображаются разрешения атрибутов для выбранной сущности. Все атрибуты сущности по умолчанию запрещены для просмотра и изменения. Установив флажки View и Modify, вы можете определить необходимый уровень доступа для выбранного атрибута.
Символ подстановки [*] в таблице атрибутов позволяет пометить все атрибуты как доступные для просмотра (View) или изменения (Modify), включая те атрибуты, которые будут добавлены к выбранной сущности в будущем.
Флажок Allow all в таблице сущностей разрешает все операции CRUD и позволяет изменять (Modify) все атрибуты, делая выбранную сущность полностью доступной для текущей роли.
На вкладке Specific вы можете определить определенные разрешения.

Фреймворк использует определенные разрешения для ограничения доступа к различным механизмам. В дереве можно увидеть разрешения, унаследованные от фреймворка и дополнений.
Чтобы добавить разрешение, используйте кнопку "плюс" на панели инструментов над деревом. В поле Resource нужно указать имя политики, определенной в вашем проекте. Узнайте, как создать специальную политику, в разделе Специальная политика.
Все специальные политики запрещены по умолчанию. Выберите политику в дереве и разрешите доступ на панели справа.
Мастер ролей уровня строк
Для создания новой роли уровня строк нажмите New → Row-level Role онке инструментов Jmix.

Введите параметры роли в появившемся диалоге.

Код роли используется при назначении роли пользователям, поэтому его не следует изменять после того, как роль была назначена некоторым пользователям. |
Studio создаст и откроет аннотированный интерфейс роли. Чтобы создать JPQL-политику, нажмите Add Policy → JPQL Policy в верхней панели действий:

Введите параметры политики в диалоге Add JPQL Policy:

Нажмите OK. Метод, определяющий политику, будет добавлен в интерфейс роли.
Аналогично, чтобы создать предикатную политику, нажмите Add Policy → Predicate Policy в верхней панели действий. В диалоге Add Predicate Policy укажите сущность и выберите операции, для которых должна действовать политика:
