4 changed files with 57 additions and 3 deletions
@ -0,0 +1,21 @@ |
|||||||
|
package org.springframework.security.access.hierarchicalroles; |
||||||
|
|
||||||
|
import org.springframework.security.core.GrantedAuthority; |
||||||
|
import org.springframework.security.core.authority.mapping.GrantedAuthoritiesMapper; |
||||||
|
|
||||||
|
import java.util.*; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author Luke Taylor |
||||||
|
*/ |
||||||
|
public class RoleHierarchyAuthoritiesMapper implements GrantedAuthoritiesMapper { |
||||||
|
private final RoleHierarchy roleHierarchy; |
||||||
|
|
||||||
|
public RoleHierarchyAuthoritiesMapper(RoleHierarchy roleHierarchy) { |
||||||
|
this.roleHierarchy = roleHierarchy; |
||||||
|
} |
||||||
|
|
||||||
|
public Collection<? extends GrantedAuthority> mapAuthorities(Collection<? extends GrantedAuthority> authorities) { |
||||||
|
return roleHierarchy.getReachableGrantedAuthorities(authorities); |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,33 @@ |
|||||||
|
package org.springframework.security.access.hierarchicalroles; |
||||||
|
|
||||||
|
import static junit.framework.Assert.assertEquals; |
||||||
|
|
||||||
|
import org.junit.*; |
||||||
|
import org.springframework.security.core.GrantedAuthority; |
||||||
|
import org.springframework.security.core.authority.AuthorityUtils; |
||||||
|
|
||||||
|
import java.util.*; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author Luke Taylor |
||||||
|
*/ |
||||||
|
public class RoleHierarchyAuthoritiesMapperTests { |
||||||
|
|
||||||
|
@Test |
||||||
|
public void expectedAuthoritiesAreReturned() { |
||||||
|
RoleHierarchyImpl rh = new RoleHierarchyImpl(); |
||||||
|
rh.setHierarchy("ROLE_A > ROLE_B\nROLE_B > ROLE_C"); |
||||||
|
RoleHierarchyAuthoritiesMapper mapper = new RoleHierarchyAuthoritiesMapper(rh); |
||||||
|
|
||||||
|
Collection<? extends GrantedAuthority> authorities = |
||||||
|
mapper.mapAuthorities(AuthorityUtils.createAuthorityList("ROLE_A", "ROLE_D")); |
||||||
|
|
||||||
|
assertEquals(4, authorities.size()); |
||||||
|
|
||||||
|
mapper = new RoleHierarchyAuthoritiesMapper(new NullRoleHierarchy()); |
||||||
|
|
||||||
|
authorities = mapper.mapAuthorities(AuthorityUtils.createAuthorityList("ROLE_A", "ROLE_D")); |
||||||
|
|
||||||
|
assertEquals(2, authorities.size()); |
||||||
|
} |
||||||
|
} |
||||||
Loading…
Reference in new issue