mirror of
https://github.com/spring-projects/spring-security.git
synced 2025-06-28 06:42:49 +00:00
Fix adding more implied roles in the RoleHierarchy Builder.
Closes gh-15717 Signed-off-by: Niels Basjes <niels@basjes.nl>
This commit is contained in:
parent
81e4c7273a
commit
2dc787a573
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2002-2023 the original author or authors.
|
* Copyright 2002-2024 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -295,11 +295,11 @@ public class RoleHierarchyImpl implements RoleHierarchy {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private Builder addHierarchy(String role, String... impliedRoles) {
|
private Builder addHierarchy(String role, String... impliedRoles) {
|
||||||
Set<GrantedAuthority> withPrefix = new HashSet<>();
|
Set<GrantedAuthority> withPrefix = this.hierarchy.computeIfAbsent(this.rolePrefix.concat(role),
|
||||||
|
(r) -> new HashSet<>());
|
||||||
for (String impliedRole : impliedRoles) {
|
for (String impliedRole : impliedRoles) {
|
||||||
withPrefix.add(new SimpleGrantedAuthority(this.rolePrefix.concat(impliedRole)));
|
withPrefix.add(new SimpleGrantedAuthority(this.rolePrefix.concat(impliedRole)));
|
||||||
}
|
}
|
||||||
this.hierarchy.put(this.rolePrefix.concat(role), withPrefix);
|
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2002-2016 the original author or authors.
|
* Copyright 2002-2024 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -259,6 +259,24 @@ public class RoleHierarchyImplTests {
|
|||||||
.containsExactlyInAnyOrderElementsOf(allAuthorities);
|
.containsExactlyInAnyOrderElementsOf(allAuthorities);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testBuilderWithRepeatedRoleBuilder() {
|
||||||
|
RoleHierarchyImpl roleHierarchyImpl = RoleHierarchyImpl.withDefaultRolePrefix()
|
||||||
|
.role("A")
|
||||||
|
.implies("B")
|
||||||
|
.role("A") // Adding more implied roles to the existing role 'A'
|
||||||
|
.implies("C", "D")
|
||||||
|
.build();
|
||||||
|
|
||||||
|
List<GrantedAuthority> flatAuthorities = AuthorityUtils.createAuthorityList("ROLE_A");
|
||||||
|
List<GrantedAuthority> allAuthorities = AuthorityUtils.createAuthorityList("ROLE_A", "ROLE_B", "ROLE_C",
|
||||||
|
"ROLE_D");
|
||||||
|
|
||||||
|
assertThat(roleHierarchyImpl).isNotNull();
|
||||||
|
assertThat(roleHierarchyImpl.getReachableGrantedAuthorities(flatAuthorities))
|
||||||
|
.containsExactlyInAnyOrderElementsOf(allAuthorities);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testBuilderWithRolePrefix() {
|
public void testBuilderWithRolePrefix() {
|
||||||
RoleHierarchyImpl roleHierarchyImpl = RoleHierarchyImpl.withRolePrefix("CUSTOM_PREFIX_")
|
RoleHierarchyImpl roleHierarchyImpl = RoleHierarchyImpl.withRolePrefix("CUSTOM_PREFIX_")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user