You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by bt...@apache.org on 2021/06/11 07:37:04 UTC
[james-project] 08/18: JAMES-3594 Use Filter instead of search
templates
This is an automated email from the ASF dual-hosted git repository.
btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 0af05751acbf015c44d937c749a0c90bffce056e
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Wed Jun 9 09:11:09 2021 +0700
JAMES-3594 Use Filter instead of search templates
---
server/data/data-ldap/pom.xml | 4 ----
.../apache/james/user/ldap/ReadOnlyLDAPUsersDAO.java | 20 +++++++++++---------
2 files changed, 11 insertions(+), 13 deletions(-)
diff --git a/server/data/data-ldap/pom.xml b/server/data/data-ldap/pom.xml
index aec06a1..a2e2228 100644
--- a/server/data/data-ldap/pom.xml
+++ b/server/data/data-ldap/pom.xml
@@ -82,10 +82,6 @@
<artifactId>commons-configuration2</artifactId>
</dependency>
<dependency>
- <groupId>org.apache.directory.api</groupId>
- <artifactId>api-ldap-model</artifactId>
- </dependency>
- <dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<scope>test</scope>
diff --git a/server/data/data-ldap/src/main/java/org/apache/james/user/ldap/ReadOnlyLDAPUsersDAO.java b/server/data/data-ldap/src/main/java/org/apache/james/user/ldap/ReadOnlyLDAPUsersDAO.java
index d400aed..772d410 100644
--- a/server/data/data-ldap/src/main/java/org/apache/james/user/ldap/ReadOnlyLDAPUsersDAO.java
+++ b/server/data/data-ldap/src/main/java/org/apache/james/user/ldap/ReadOnlyLDAPUsersDAO.java
@@ -61,7 +61,6 @@ public class ReadOnlyLDAPUsersDAO implements UsersDAO, Configurable {
private static final Logger LOGGER = LoggerFactory.getLogger(ReadOnlyLDAPUsersDAO.class);
private LdapRepositoryConfiguration ldapConfiguration;
- private String filterTemplate;
private LDAPConnectionPool ldapConnectionPool;
@Inject
@@ -103,7 +102,6 @@ public class ReadOnlyLDAPUsersDAO implements UsersDAO, Configurable {
+ ldapConfiguration.getConnectionTimeout() + '\n' + "readTimeout: " + ldapConfiguration.getReadTimeout()
+ '\n' + "maxRetries: " + ldapConfiguration.getMaxRetries() + '\n');
}
- filterTemplate = "(&({0}={1})(objectClass={2})" + StringUtils.defaultString(ldapConfiguration.getFilter(), "") + ")";
LDAPConnectionOptions connectionOptions = new LDAPConnectionOptions();
connectionOptions.setConnectTimeoutMillis(ldapConfiguration.getConnectionTimeout());
@@ -120,6 +118,16 @@ public class ReadOnlyLDAPUsersDAO implements UsersDAO, Configurable {
ldapConnectionPool.close();
}
+ private Filter createFilter(String username) {
+ return Optional.ofNullable(ldapConfiguration.getFilter())
+ .map(Throwing.function(userFilter -> Filter.createANDFilter(
+ Filter.createEqualityFilter("objectClass", ldapConfiguration.getUserObjectClass()),
+ Filter.createEqualityFilter(ldapConfiguration.getUserIdAttribute(), username),
+ Filter.create(userFilter))))
+ .orElseGet(() -> Filter.createANDFilter(
+ Filter.createEqualityFilter("objectClass", ldapConfiguration.getUserObjectClass()),
+ Filter.createEqualityFilter(ldapConfiguration.getUserIdAttribute(), username)));
+ }
/**
* Indicates if the user with the specified DN can be found in the group
@@ -192,15 +200,9 @@ public class ReadOnlyLDAPUsersDAO implements UsersDAO, Configurable {
private ReadOnlyLDAPUser searchAndBuildUser(Username name) throws LDAPException {
LDAPConnection connection = ldapConnectionPool.getConnection();
try {
- String sanitizedFilter = FilterEncoder.format(
- filterTemplate,
- ldapConfiguration.getUserIdAttribute(),
- name.asString(),
- ldapConfiguration.getUserObjectClass());
-
SearchResult searchResult = connection.search(ldapConfiguration.getUserBase(),
SearchScope.SUB,
- sanitizedFilter,
+ createFilter(name.asString()),
ldapConfiguration.getUserIdAttribute());
SearchResultEntry result = searchResult.getSearchEntries()
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org