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:00 UTC

[james-project] 04/18: JAMES-3594 Implement ReadOnlyLDAPUsersDAO with UnboundID library

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 2712b332588a0d2b755fac28936b2b19916a0f92
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Wed Jun 9 08:14:51 2021 +0700

    JAMES-3594 Implement ReadOnlyLDAPUsersDAO with UnboundID library
---
 .../apache/james/user/ldap/ReadOnlyLDAPUser.java   |  4 +--
 .../james/user/ldap/ReadOnlyLDAPUsersDAO.java      | 35 ++++++++--------------
 2 files changed, 14 insertions(+), 25 deletions(-)

diff --git a/server/data/data-ldap/src/main/java/org/apache/james/user/ldap/ReadOnlyLDAPUser.java b/server/data/data-ldap/src/main/java/org/apache/james/user/ldap/ReadOnlyLDAPUser.java
index b185e9f..09ecc6c 100644
--- a/server/data/data-ldap/src/main/java/org/apache/james/user/ldap/ReadOnlyLDAPUser.java
+++ b/server/data/data-ldap/src/main/java/org/apache/james/user/ldap/ReadOnlyLDAPUser.java
@@ -29,6 +29,7 @@ import org.slf4j.LoggerFactory;
 import com.unboundid.ldap.sdk.BindResult;
 import com.unboundid.ldap.sdk.LDAPConnectionPool;
 import com.unboundid.ldap.sdk.LDAPException;
+import com.unboundid.ldap.sdk.ResultCode;
 
 import reactor.core.publisher.Mono;
 
@@ -145,7 +146,6 @@ public class ReadOnlyLDAPUser implements User, Serializable {
 
     private boolean doVerifyPassword(String password) throws LDAPException {
         BindResult bindResult = connectionPool.bindAndRevertAuthentication(userDN, password);
-        return bindResult.getResultCode()
-            .intValue() == 0;
+        return bindResult.getResultCode() == ResultCode.SUCCESS;
     }
 }
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 0dc4ecd..d400aed 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
@@ -113,7 +113,6 @@ public class ReadOnlyLDAPUsersDAO implements UsersDAO, Configurable {
         SocketFactory socketFactory = null;
         LDAPConnection ldapConnection = new LDAPConnection(socketFactory, connectionOptions, uri.getHost(), uri.getPort(), ldapConfiguration.getPrincipal(), ldapConfiguration.getCredentials());
         ldapConnectionPool = new LDAPConnectionPool(ldapConnection, 4);
-        // TODO implement retries
     }
 
     @PreDestroy
@@ -155,19 +154,14 @@ public class ReadOnlyLDAPUsersDAO implements UsersDAO, Configurable {
     }
 
     private Set<String> getAllUsersFromLDAP() throws LDAPException {
-        LDAPConnection connection = ldapConnectionPool.getConnection();
-        try {
-            SearchResult searchResult = connection.search(ldapConfiguration.getUserBase(),
-                SearchScope.SUB,
-                filterTemplate);
+        SearchResult searchResult = ldapConnectionPool.search(ldapConfiguration.getUserBase(),
+            SearchScope.SUB,
+            filterTemplate);
 
-            return searchResult.getSearchEntries()
-                .stream()
-                .map(entry -> entry.getObjectClassAttribute().getName())
-                .collect(Guavate.toImmutableSet());
-        } finally {
-            ldapConnectionPool.releaseConnection(connection);
-        }
+        return searchResult.getSearchEntries()
+            .stream()
+            .map(entry -> entry.getObjectClassAttribute().getName())
+            .collect(Guavate.toImmutableSet());
     }
 
     /**
@@ -229,16 +223,11 @@ public class ReadOnlyLDAPUsersDAO implements UsersDAO, Configurable {
     }
 
     private Optional<ReadOnlyLDAPUser> buildUser(String userDN) throws LDAPException {
-        LDAPConnection connection = ldapConnectionPool.getConnection();
-        try {
-            SearchResultEntry userAttributes = connection.getEntry(userDN);
-            Optional<String> userName = Optional.ofNullable(userAttributes.getAttributeValue(ldapConfiguration.getUserIdAttribute()));
-            return userName
-                .map(Username::of)
-                .map(username -> new ReadOnlyLDAPUser(username, userDN, ldapConnectionPool, ldapConfiguration));
-        } finally {
-            ldapConnectionPool.releaseConnection(connection);
-        }
+        SearchResultEntry userAttributes = ldapConnectionPool.getEntry(userDN);
+        Optional<String> userName = Optional.ofNullable(userAttributes.getAttributeValue(ldapConfiguration.getUserIdAttribute()));
+        return userName
+            .map(Username::of)
+            .map(username -> new ReadOnlyLDAPUser(username, userDN, ldapConnectionPool, ldapConfiguration));
     }
 
     @Override

---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org