A.3. default-permission-values.xml

Файлы данного типа используются в CUBA до версии 7.2, а также в мигрированных проектах, сохраняющих предыдущий метод расчета действующих разрешений, как описано в разделе Предыдущая реализация ролей и разрешений.

Разрешения по умолчанию используются тогда, когда ни одна из имеющихся ролей не задаёт разрешения на конкретный экран или функциональность. Разрешения необходимы по большей части для запрещающих ролей: без этого файла пользователь с запрещающей ролью не будет иметь доступа к главному экрану и экранам фильтров.

Данный файл нужно создать в модуле core.

Расположение файла задается в свойстве приложения cuba.defaultPermissionValuesConfig. Если свойство не задано, будет использован файл платформы по умолчанию - cuba-default-permission-values.xml.

Схема XML доступна по адресу http://schemas.haulmont.com/cuba/default-permission-values.xsd.

Рассмотрим структуру файла.

default-permission-values - корневой элемент. Он содержит всего один вложенный элемент - permission.

permission - само разрешение: определяет, на какой тип объектов накладывается разрешение или запрет.

У permission есть три атрибута:

  • target - конкретный объект разрешения. Формат представления объекта зависит от типа разрешения: для экранов это значение их id, для операций над сущностями - id сущности с типом операции, к примеру, target="sec$Filter:read", и т.д.

  • value - значение разрешения. Может иметь значения 0 или 1 (запрещен или разрешен соответственно).

  • type - тип объекта разрешения:

    • 10 - экран,

    • 20 - операция над сущностью,

    • 30 - атрибут сущности,

    • 40 - специфическое разрешение на произвольную именованную функциональность,

    • 50 - компонент UI.

Пример:

<?xml version="1.0" encoding="UTF-8"?>
<default-permission-values xmlns="http://schemas.haulmont.com/cuba/default-permission-values.xsd">
    <permission target="dynamicAttributesConditionEditor" value="0" type="10"/>
    <permission target="dynamicAttributesConditionFrame" value="0" type="10"/>
    <permission target="sec$Filter:read" value="1" type="20"/>
    <permission target="cuba.gui.loginToClient" value="1" type="40"/>
</default-permission-values>