Добрый день!
Имеем:
Ресурсные роли: Роль1, Роль2
Роль2 добавлена как дочерняя в Роль1.
Роль1 назначена пользователю.
Есть штатный механизм для определения наличия Роль2 у пользователя?
Добрый день!
Имеем:
Ресурсные роли: Роль1, Роль2
Роль2 добавлена как дочерняя в Роль1.
Роль1 назначена пользователю.
Есть штатный механизм для определения наличия Роль2 у пользователя?
Добрый день!
Сейчас дочерние роли не добавляются в коллекцию authorities текущего пользователя. Можно получить все основные роли пользователя, а потом проверить их на наличие дочерних:
Получить “основные” роли:
Set<String> roleCodes = user.getAuthorities().stream()
.filter(authority -> authority instanceof RoleGrantedAuthority)
.map(authority -> ((RoleGrantedAuthority) authority).getAuthority())
.collect(Collectors.toSet());
Для каждой из основных ролей потом с помощью ResourceRoleRepository
можно получить объект ResourceRole у которого уже есть коллекция childRoles:
@Autowired
private ResourceRoleRepository resourceRoleRepository;
//...
ResourceRole role = resourceRoleRepository.findRoleByCode(roleCode);
if (role != null ) {
Set<String> childRoles = role.getChildRoles();
}
Максим, спасибо.
А в коллекции childRoles будут роли из всего дерева на всю глубину или придется рекурсивно обходить все роли?
Только непосредственно указанные в child roles роли. Придётся обходить самостоятельно.