in interceptors/authz/src/main/java/org/apache/directory/server/core/authz/support/RelatedUserClassFilter.java [101:168]
private boolean isRelated( Collection<String> userGroupNames, Dn userName, Entry userEntry,
Dn entryName, Collection<UserClass> userClasses ) throws LdapException
{
for ( UserClass userClass : userClasses )
{
if ( userClass == UserClass.ALL_USERS )
{
return true;
}
else if ( userClass == UserClass.THIS_ENTRY )
{
if ( userName.equals( entryName ) )
{
return true;
}
}
else if ( userClass == UserClass.PARENT_OF_ENTRY )
{
if ( entryName.isDescendantOf( userName ) )
{
return true;
}
}
else if ( userClass instanceof UserClass.Name )
{
UserClass.Name nameUserClass = ( UserClass.Name ) userClass;
if ( ( userName != null ) && nameUserClass.getNames().contains( userName.getNormName() ) )
{
return true;
}
}
else if ( userClass instanceof UserClass.UserGroup )
{
UserClass.UserGroup userGroupUserClass = ( UserClass.UserGroup ) userClass;
for ( String userGroupName : userGroupNames )
{
Set<String> dns = userGroupUserClass.getNames();
if ( userGroupName != null )
{
for ( String dn : dns )
{
if ( userGroupName.equals( dn ) )
{
return true;
}
}
}
}
}
else if ( userClass instanceof UserClass.Subtree )
{
UserClass.Subtree subtree = ( UserClass.Subtree ) userClass;
if ( matchUserClassSubtree( userName, userEntry, subtree ) )
{
return true;
}
}
else
{
throw new InternalError( I18n.err( I18n.ERR_15021_UNEXPECTED_USER_CLASS, userClass.getClass().getName() ) );
}
}
return false;
}