in src/main/java/org/apache/directory/fortress/core/impl/UserDAO.java [1117:1196]
List<User> getAuthorizedUsers( Role role ) throws FinderException
{
List<User> userList = new ArrayList<>();
LdapConnection ld = null;
String userRoot = getRootDn( role.getContextId(), GlobalIds.USER_ROOT );
try
{
String roleVal = encodeSafeText( role.getName(), GlobalIds.USERID_LEN );
StringBuilder filterbuf = new StringBuilder();
filterbuf.append( GlobalIds.FILTER_PREFIX );
filterbuf.append( USERS_AUX_OBJECT_CLASS_NAME );
filterbuf.append( ")(" );
Set<String> roles = RoleUtil.getInstance().getDescendants( role.getName(), role.getContextId() );
if ( CollectionUtils.isNotEmpty( roles ) )
{
filterbuf.append( "|(" );
filterbuf.append( USER_ROLE_ASSIGN );
filterbuf.append( "=" );
filterbuf.append( roleVal );
filterbuf.append( ")" );
for ( String uRole : roles )
{
filterbuf.append( "(" );
filterbuf.append( USER_ROLE_ASSIGN );
filterbuf.append( "=" );
filterbuf.append( uRole );
filterbuf.append( ")" );
}
filterbuf.append( ")" );
}
else
{
filterbuf.append( USER_ROLE_ASSIGN );
filterbuf.append( "=" );
filterbuf.append( roleVal );
filterbuf.append( ")" );
}
filterbuf.append( ")" );
ld = getAdminConnection();
try ( SearchCursor searchResults = search( ld, userRoot, SearchScope.ONELEVEL, filterbuf.toString(), defaultAtrs, false,
Config.getInstance().getInt(GlobalIds.CONFIG_LDAP_MAX_BATCH_SIZE, GlobalIds.BATCH_SIZE ) ) )
{
long sequence = 0;
while ( searchResults.next() )
{
userList.add( unloadLdapEntry( searchResults.getEntry(), sequence++, role.getContextId() ) );
}
}
catch ( IOException e )
{
String warning = "getAuthorizedUsers role name [" + role.getName() + "] caught IOException=" + e
.getMessage();
throw new FinderException( GlobalErrIds.URLE_SEARCH_FAILED, warning, e );
}
catch ( CursorException e )
{
String warning = "getAuthorizedUsers role name [" + role.getName() + "] caught LDAPException=" + e
.getMessage();
throw new FinderException( GlobalErrIds.URLE_SEARCH_FAILED, warning, e );
}
}
catch ( LdapException e )
{
String warning = "getAuthorizedUsers role name [" + role.getName() + "] caught LDAPException=" + e
.getMessage();
throw new FinderException( GlobalErrIds.URLE_SEARCH_FAILED, warning, e );
}
finally
{
closeAdminConnection( ld );
}
return userList;
}