net.sourceforge.jfacets.acegi
Class InMemoryHierarchicalUDS

java.lang.Object
  extended by org.acegisecurity.userdetails.memory.InMemoryDaoImpl
      extended by net.sourceforge.jfacets.acegi.InMemoryHierarchicalUDS
All Implemented Interfaces:
IHierarchicalUserDetailsService, INavigableHierarchicalUserDetailsService, org.acegisecurity.userdetails.UserDetailsService, org.springframework.beans.factory.InitializingBean

public class InMemoryHierarchicalUDS
extends org.acegisecurity.userdetails.memory.InMemoryDaoImpl
implements INavigableHierarchicalUserDetailsService

Example of hierarchical roles using property files. Extends Acegi's InMemoryDaoImpl and implements the IHierarchicalUserDetailsService interface so that composite roles can be handled by WebFacets.
Also, it makes use of HierarchicalUserDetails objects (see method loadUserByUsername) so that ACLs also work with hierarchical roles.


Field Summary
private  int loadedRolesCount
           
private static JFacetsLogger logger
           
private  java.util.Properties roleProperties
           
private  java.util.HashMap<java.lang.String,org.acegisecurity.GrantedAuthority> roles
           
private  java.util.HashMap<org.acegisecurity.GrantedAuthority,java.util.ArrayList<org.acegisecurity.GrantedAuthority>> rolesAndParents
           
private  java.util.HashMap<java.lang.String,org.acegisecurity.userdetails.UserDetails> userNamesAndDetails
           
private  boolean wrapUserDetails
           
 
Constructor Summary
InMemoryHierarchicalUDS()
           
 
Method Summary
private  void addToParents(org.acegisecurity.GrantedAuthority child, org.acegisecurity.GrantedAuthority parent)
           
 void afterPropertiesSet()
           
 org.acegisecurity.GrantedAuthority[] getChildRoles(org.acegisecurity.GrantedAuthority parentRole)
           
 org.acegisecurity.GrantedAuthority getGrantedAuthority(java.lang.String roleName)
          From IHierarchicalUserDetailsService.
private  org.acegisecurity.GrantedAuthority getOrCreate(java.lang.String name)
           
 org.acegisecurity.GrantedAuthority[] getParentRoles(org.acegisecurity.GrantedAuthority grantedAuthority)
          From IHierarchicalUserDetailsService.
 org.acegisecurity.GrantedAuthority[] getRootRoles()
           
 org.acegisecurity.userdetails.UserDetails[] getUsersInRole(org.acegisecurity.GrantedAuthority role)
           
 boolean isWrapUserDetails()
           
private  void loadRoles()
           
 org.acegisecurity.userdetails.UserDetails loadUserByUsername(java.lang.String username)
          Overriden method that wraps UserDetails into HierarchicalUserDetails, so that ACLs also benefit of roles inheritance.
private  void loadUsers()
           
 void setRoleProperties(java.util.Properties roleProperties)
           
 void setUserProperties(java.util.Properties userProperties)
          Overriden in order to store all users internally (in order to implement getUsersInRole()).
 void setWrapUserDetails(boolean wrapUserDetails)
           
 
Methods inherited from class org.acegisecurity.userdetails.memory.InMemoryDaoImpl
getUserMap, setUserMap
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

logger

private static final JFacetsLogger logger

roleProperties

private java.util.Properties roleProperties

wrapUserDetails

private boolean wrapUserDetails

roles

private java.util.HashMap<java.lang.String,org.acegisecurity.GrantedAuthority> roles

rolesAndParents

private java.util.HashMap<org.acegisecurity.GrantedAuthority,java.util.ArrayList<org.acegisecurity.GrantedAuthority>> rolesAndParents

userNamesAndDetails

private java.util.HashMap<java.lang.String,org.acegisecurity.userdetails.UserDetails> userNamesAndDetails

loadedRolesCount

private int loadedRolesCount
Constructor Detail

InMemoryHierarchicalUDS

public InMemoryHierarchicalUDS()
Method Detail

setRoleProperties

public void setRoleProperties(java.util.Properties roleProperties)

setUserProperties

public void setUserProperties(java.util.Properties userProperties)
Overriden in order to store all users internally (in order to implement getUsersInRole()).

Overrides:
setUserProperties in class org.acegisecurity.userdetails.memory.InMemoryDaoImpl

afterPropertiesSet

public void afterPropertiesSet()
                        throws java.lang.Exception
Specified by:
afterPropertiesSet in interface org.springframework.beans.factory.InitializingBean
Overrides:
afterPropertiesSet in class org.acegisecurity.userdetails.memory.InMemoryDaoImpl
Throws:
java.lang.Exception

loadRoles

private void loadRoles()

loadUsers

private void loadUsers()

getOrCreate

private org.acegisecurity.GrantedAuthority getOrCreate(java.lang.String name)

addToParents

private void addToParents(org.acegisecurity.GrantedAuthority child,
                          org.acegisecurity.GrantedAuthority parent)

getGrantedAuthority

public org.acegisecurity.GrantedAuthority getGrantedAuthority(java.lang.String roleName)
From IHierarchicalUserDetailsService. Return a G.A. for passed role name.

Specified by:
getGrantedAuthority in interface IHierarchicalUserDetailsService

getParentRoles

public org.acegisecurity.GrantedAuthority[] getParentRoles(org.acegisecurity.GrantedAuthority grantedAuthority)
From IHierarchicalUserDetailsService. Return an array of parent G.A.s for passed G.A. (reflects roles inheritance).

Specified by:
getParentRoles in interface IHierarchicalUserDetailsService

loadUserByUsername

public org.acegisecurity.userdetails.UserDetails loadUserByUsername(java.lang.String username)
                                                             throws org.acegisecurity.userdetails.UsernameNotFoundException,
                                                                    org.springframework.dao.DataAccessException
Overriden method that wraps UserDetails into HierarchicalUserDetails, so that ACLs also benefit of roles inheritance.

Specified by:
loadUserByUsername in interface org.acegisecurity.userdetails.UserDetailsService
Overrides:
loadUserByUsername in class org.acegisecurity.userdetails.memory.InMemoryDaoImpl
Throws:
org.acegisecurity.userdetails.UsernameNotFoundException
org.springframework.dao.DataAccessException
See Also:
HierarchicalUserDetails

isWrapUserDetails

public boolean isWrapUserDetails()

setWrapUserDetails

public void setWrapUserDetails(boolean wrapUserDetails)

getRootRoles

public org.acegisecurity.GrantedAuthority[] getRootRoles()
Specified by:
getRootRoles in interface INavigableHierarchicalUserDetailsService

getChildRoles

public org.acegisecurity.GrantedAuthority[] getChildRoles(org.acegisecurity.GrantedAuthority parentRole)
Specified by:
getChildRoles in interface INavigableHierarchicalUserDetailsService

getUsersInRole

public org.acegisecurity.userdetails.UserDetails[] getUsersInRole(org.acegisecurity.GrantedAuthority role)
Specified by:
getUsersInRole in interface INavigableHierarchicalUserDetailsService


Copyright © 2010. All Rights Reserved.