Найти всех пользователей с назначенной специальной политикой

Добрый день!
Jmix 1.5.3

Как можно найти всех пользователей, которым назначена указанная специальная политика?

Специальная политика - значит у вас есть ResourceRole с определенным кодом(roleCode).
Если у юзера есть данная Ресурсная роль, то в таблице SEC_ROLE_ASSIGNMENT должна быть данная роль.
Можете сделать запрос в бд
select u from User u where u.username in (select ra.username from sec_RoleAssignmentEntity ra where ra.roleCode = :roleCode and ra.roleType = 'resource')

@yarik1706 , спасибо.
Это будет работать при прямом назначении роли. А если роль будет в дочерней, то вопрос.

Олег, здравствуйте!

Можно попробовать воспользоваться методами io.jmix.security.role.ResourceRoleRepository#getAllRoles - для получения всех ролей
и
io.jmix.security.model.ResourceRole#getAllResourcePolicies - для получения всех политик роли, в т.ч. дочерних.
Используя эти методы можно составить список ролей, содержащих нужную политику (примерно так):

    List<ResourceRole> rolesWithPolicy = resourceRoleRepository.getAllRoles().stream()
                .filter(resourceRole -> {
                    Collection<ResourcePolicy> allRolePolicies = resourceRole.getAllResourcePolicies();
                    return /*check that allRolePolicies contains required specific policy*/;
                })
                .toList();

и загрузить пользователей с полученными ролями используя запрос, который предложил Ярослав, но только с условием in для ra.roleCode.

С уважением,
Дмитрий

1 симпатия