Комбинирование ролей

Несколько ролей можно комбинировать, создав иерархию, согласно следующим правилам:

  • Ресурсные роли комбинируются только с другими ресурсными ролями.

  • Роли уровня строк комбинируются только с другими ролями уровня строк.

  • Если роль назначена пользователю, все разрешения родительских ролей также применяются.

Роли можно комбинировать на этапе проектирования — либо написав код, либо используя дизайнер ролей. В запущенном приложении, иерарахией можно управлять через экраны Security.

Комбинирование ресурсных ролей на этапе проектирования

Комбинация ролей в коде представляет собой наследование интерфейсов. Например, ресурсная роль SystemOwner может наследовать политики из нескольких более ограниченных ролей, а затем расширить доступ, добавив собственные дополнительные политики.

@ResourceRole(name = "SystemOwner", code = SystemOwnerRole.CODE)
public interface SystemOwnerRole extends BasicEmployeeRole, ManagerRole, SupervisorRole {
    String CODE = "system-owner";

    // System owner's policies go here

}

Используйте дизайнер ролей в Studio, чтобы визуально комбинировать ресурсные роли и наглядно видеть результирующий набор политик.

resource role designer

Комбинирование ресурсных ролей в приложении

Ресурсные роли можно комбинировать в приложении на экране Security → Resource roles. Создайте или выберите роль для редактирования, затем добавьте одну или несколько Base roles.

combined runtime resource role

Итоговый набор разрешений — это собственные разрешения роли плюс все разрешения, предоставленные выбранными базовыми ролями.

Добавление base roles доступно только для ролей которые созданы в приложении.

Комбинирование ролей уровня строк на этапе проектирования

Чтобы комбинировать роли уровня строк, создайте интерфейс, который расширяет существующие интерфейсы ролей. Например, роль SameRegionRole объединяет несколько ролей, чьи политики позволяют сотруднику видеть только данные своего региона.

@RowLevelRole(name = "Can see data of their region", code = SameRegionRole.CODE)
public interface SameRegionRole extends SameRegionCustomersRole, SameRegionRowsRole {
    String CODE = "same-region-role";
}

Комбинирование ролей уровня строк в приложении

Роли уровня строк можно комбинировать в приложении на экране Security → Row-level roles. Создайте или выберите роль для редактирования, затем добавьте одну или несколько Base roles.

combined runtime row level role

Итоговый набор разрешений — это собственные разрешения роли плюс все разрешения, предоставленные выбранными базовыми ролями.

Добавление base roles доступно только для ролей которые созданы в приложении.