SEC-1492: Added RoleHierarchyAuthoritiesMapper as the new preferred way of using a RoleHierarchy.

This commit is contained in:
Luke Taylor
2010-12-16 16:00:43 +00:00
parent c8820166c8
commit 46f83c8a08
4 changed files with 57 additions and 3 deletions

View File

@@ -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);
}
}

View File

@@ -23,8 +23,8 @@ import org.springframework.security.core.userdetails.UserDetailsService;
* instead of only the directly assigned authorities.
*
* @author Michael Mayr
* @deprecated use a {@code RoleHierarchyVoter} instead of populating the user Authentication object
* with the additional authorities.
* @deprecated use a {@code RoleHierarchyVoter} or use a {@code RoleHierarchyAuthoritiesMapper} to populate the
* Authentication object with the additional authorities.
*/
public class UserDetailsServiceWrapper implements UserDetailsService {

View File

@@ -26,7 +26,7 @@ import org.springframework.security.core.userdetails.UserDetails;
* delegated to the <tt>UserDetails</tt> implementation.
*
* @author Michael Mayr
* @deprecated use a {@link RoleHierarchyVoter} instead.
* @deprecated use a {@link RoleHierarchyVoter} or {@code RoleHierarchyAuthoritiesMapper} instead.
*/
public class UserDetailsWrapper implements UserDetails {