Дизайнер ролей
Studio предоставляет визуальные инструменты для редактирования параметров ресурсных ролей и ролей уровня строк во время разработки.
Эта функциональность свободно доступна для использования в небольших проектах с количеством сущностей и ролей до 10. В более крупном проекте для нее требуется подписка Sprint, Enterprise или BPM. |
Дизайнер ресурсных ролей
Чтобы создать новую ресурсную роль, используйте меню в Окне инструментов Jmix.

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

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

Код роли используется при назначении роли пользователям. Не изменяйте его после того, как роль была назначена пользователям. |
Иерархия ролей
Просматривать и управлять иерархией ролей можно с помощью панелей Role Hierarchy.
Верхняя панель напрямую отображает иерархию ролей. Выбранная в данный момент роль считается корневой.
Нижняя панель содержит панель инструментов с кнопками действий и список доступных ролей. Сюда входят роли, определенные в проекте, а также роли из связанных проектов и дополнений.
Добавить роль из списка доступных ролей в иерархию можно следующими способами:
-
Двойной щелчок по роли в списке Available Roles.
-
Использование действий контекстного меню (доступно по правому щелчку на роли в списке Available Roles).
-
Нажатие кнопки со стрелкой вверх, расположенной в верхней части панели Available Roles.
Роль будет добавлена как родительская для текущей роли.
Чтобы удалить роль из иерархии, выберите ее и нажмите кнопку с минусом или используйте действия в контекстном меню.
Разрешения пользовательского интерфейса
На вкладке User Interface определяются разрешения для пунктов меню и экранов.
Разрешения отображаются для выбранной роли:
-
Текущая роль - редактируемые разрешения, определенные в самой роли
-
Родительская роль - доступное только для чтения отображение с возможностью навигации к соответствующему файлу роли

Дерево справа отображает структуру главного меню, включая как определенные в проекте экраны, так и унаследованные экраны из фреймворка и дополнений. Группа All Views отображает все остальные экраны приложения, которые недоступны напрямую через главное меню. Найти нужный экран можно с помощью поля поиска, расположенного над деревом.
Все пункты меню и экраны по умолчанию запрещены. Выбрав элемент в списке и выбрав Allow на панели View Permissions, вы добавите разрешение на открытие соответствующего пункта меню или экрана.
Используйте панель инструментов над деревом, чтобы развернуть или свернуть его узлы. Кнопка с шестеренкой переключает отображение экранов и пунктов меню, для которых не указаны разрешения.
Флажок Allow all views полезен, если нужно предоставить доступ ко всем экранам или запретить доступ только к некоторым.
Разрешения для сущностей
На вкладке Entities определяются CRUD-разрешения для сущностей и атрибутов.
Разрешения отображаются для выбранной роли:
-
Текущая роль - редактируемые CRUD-разрешения
-
Родительская роль - доступное только для чтение отображение 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 укажите сущность и выберите операции, для которых должна действовать политика:
