Добрый день!
Jmix 2.2.1
Уже почти два дня пытаюсь разобраться с ролями. Мне нужно, чтобы админ заходил на сайт, добавлял пользователя и выбирал одну из трех ролей (условно - Ученик, Учитель, Родитель) в специальном выпадающем списке. Как сделать так, чтобы при выборе одного пункта из списка, пользователю автоматически назначались нужные ресурсные и row-level роли?
Если я правильно понял вопрос. Вы хотите чтоб в редакторе юзера или в таблице юзеров одним действием сразу добавлялись роли на ResourceRole
и RowLevelRole
.
Скорее всего тут надо будет
-
Создать роли resource-roles и row-level-roles Для
Ученик, Учитель, Родитель
поresource
иrow-level
. -
Добавить 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
Спасибо!