Allowing filtering of LDAP groups
diff --git a/redback-common/redback-common-ldap/src/main/java/org/apache/archiva/redback/common/ldap/role/DefaultLdapRoleMapper.java b/redback-common/redback-common-ldap/src/main/java/org/apache/archiva/redback/common/ldap/role/DefaultLdapRoleMapper.java
index 369ff17..d7f2ead 100644
--- a/redback-common/redback-common-ldap/src/main/java/org/apache/archiva/redback/common/ldap/role/DefaultLdapRoleMapper.java
+++ b/redback-common/redback-common-ldap/src/main/java/org/apache/archiva/redback/common/ldap/role/DefaultLdapRoleMapper.java
@@ -92,6 +92,8 @@
private String groupsDn;
+ private String groupFilter;
+
private String baseDn;
private String ldapGroupMember = "uniquemember";
@@ -120,6 +122,8 @@
this.groupsDn = this.baseDn;
}
+ this.groupFilter = userConf.getString( UserConfigurationKeys.LDAP_GROUPS_FILTER, this.groupFilter );
+
this.useDefaultRoleName =
userConf.getBoolean( UserConfigurationKeys.LDAP_GROUPS_USE_ROLENAME, this.useDefaultRoleName );
@@ -145,6 +149,11 @@
String filter = "objectClass=" + getLdapGroupClass();
+ if ( !StringUtils.isEmpty( this.groupFilter ) )
+ {
+ filter = "&(" + filter + ")(" + this.groupFilter + ")";
+ }
+
namingEnumeration = context.search( getGroupsDn(), filter, searchControls );
List<String> allGroups = new ArrayList<String>();
diff --git a/redback-configuration/src/main/java/org/apache/archiva/redback/configuration/UserConfigurationKeys.java b/redback-configuration/src/main/java/org/apache/archiva/redback/configuration/UserConfigurationKeys.java
index e4541dd..a61802b 100644
--- a/redback-configuration/src/main/java/org/apache/archiva/redback/configuration/UserConfigurationKeys.java
+++ b/redback-configuration/src/main/java/org/apache/archiva/redback/configuration/UserConfigurationKeys.java
@@ -84,6 +84,8 @@
String LDAP_GROUPS_BASEDN = "ldap.config.groups.base.dn";
+ String LDAP_GROUPS_FILTER = "ldap.config.groups.filter";
+
String LDAP_GROUPS_MEMBER = "ldap.config.groups.member";
String LDAP_GROUPS_ROLE_START_KEY = "ldap.config.groups.role.";