Назначение ресурсных и row-ролей пользователям

Добрый день!
Jmix 2.2.1
Уже почти два дня пытаюсь разобраться с ролями. Мне нужно, чтобы админ заходил на сайт, добавлял пользователя и выбирал одну из трех ролей (условно - Ученик, Учитель, Родитель) в специальном выпадающем списке. Как сделать так, чтобы при выборе одного пункта из списка, пользователю автоматически назначались нужные ресурсные и row-level роли?

Если я правильно понял вопрос. Вы хотите чтоб в редакторе юзера или в таблице юзеров одним действием сразу добавлялись роли на ResourceRole и RowLevelRole.

Скорее всего тут надо будет

  1. Создать роли resource-roles и row-level-roles Для Ученик, Учитель, Родитель по resource и row-level.

  2. Добавить action в Таблицу которая будет их сохранять в бд для нужного юзера. Создаете сущность RoleAssignmentEntity и проставляете ей код Роли, username Пользователя для этой роли и Тип роли RESOURCE или ROW_LEVEL

Если я правильно понимаю вопрос. То самое главное для вас это как-то “объединить” RESOURCE и ROW_LEVEL под одну роль. К сожалению прямого решения на это дать сложно. Все зависит от ваших потребностей. Смогут ли Админы в рантайме заниматься таким объединением или ток разработчики добавлением кода.

Нужно ли вам чтоб админы могли видеть у Юзера “объединенную” роль, менять ее и удалять. Или список RESOURCE или ROW_LEVEL будет достаточен. В общем есть над чем подумать)

Спасибо!

Да, есть конкретные resource-roles и row-level roles. Но мне не нужно в прямом смысле “объединять” эти роли. Прямо с коробки для админа есть возможность зайти на сайт, добавить пользователя и вручную задать ему необходимые роли (например две ресурсные и одну row-level). Самый главный вопрос - это как задавать роли конкретному пользователю в коде, а не на сайте. Если я пойму как это сделать, то смогу реализовать нужную логику. Просто хочется чтобы это делалось одним нажатием, а не кучей. Саму кучу хочется спрятать под капот и уже в коде задать необходимые роли пользователю.

Как я написал выше. Через создание RoleAssignmentEntity.

Прошу прощения за глупые вопросы… Почитал документацию, полазил по классам. Не могу разобраться как это делать. Могу попросить вас написать какой-то пример? Условно: задать пользователю две ресурсные роли и одну row-level роль. И как потом эти роли поменять? Буду оооочень благодарен за помощь и потраченное время!!!

Посмотрите пример здесь: 2023-08-security-advanced-1/src/main/java/com/company/jmixpm/app/RegistrationService.java at 5a3ba9a3fb109975e491e1db7e5c6c0f16950b63 · jmix-edu/2023-08-security-advanced-1 · GitHub

Спасибо!