Добрый день!
Есть необходимость назначать роли пользователям в рантайме после логина пользователя и после переключения замещения, аналогично как это сделано для jmix.ldap.default-roles.
Подскажите, пожалуйста, какой код и где можно разместить или где почитать?
Добрый!
Как вариант, можно изменить класс DatabaseUserRepository
, который генерируется в каждом новом проекте.
Метод loadUserByUsername
используется для загрузки юзера со списком ролей. Внутри этого метода можно расширить список ролей, добавив в него нужные дефолтные. Что-то вроде такого:
@Override
public User loadUserByUsername(String username) throws UsernameNotFoundException {
User user = super.loadUserByUsername(username);
Collection<GrantedAuthority> authorities = new ArrayList<>(user.getAuthorities());
Collection<ResourceRole> defaultRoles = getDefaultRoles();
for (ResourceRole defaultRole : defaultRoles) {
authorities.add(RoleGrantedAuthority.ofResourceRole(defaultRole));
}
user.setAuthorities(authorities);
return user;
}
private Collection<ResourceRole> getDefaultRoles() {
List<ResourceRole> defaultRoles = new ArrayList<>();
ResourceRole customerRole = resourceRoleRepository.getRoleByCode(CustomerRole.CODE);
defaultRoles.add(customerRole);
return defaultRoles;
}
Проект: default-roles.zip (89.1 КБ)
Максим, спасибо. Работает.