Автодобавление ролей пользователю в runtime

Добрый день!
Есть необходимость назначать роли пользователям в рантайме после логина пользователя и после переключения замещения, аналогично как это сделано для 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 КБ)

Максим, спасибо. Работает.