You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by ad...@apache.org on 2018/04/06 13:20:33 UTC

[14/24] james-project git commit: JAMES-2366 UsersRepository should be case insensitive for domain part

JAMES-2366 UsersRepository should be case insensitive for domain part


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/3e97f941
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/3e97f941
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/3e97f941

Branch: refs/heads/master
Commit: 3e97f941634e108229214d3fe678f08c3e214feb
Parents: ce6e83d
Author: Antoine Duprat <ad...@linagora.com>
Authored: Wed Apr 4 13:53:46 2018 +0200
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Fri Apr 6 15:04:48 2018 +0200

----------------------------------------------------------------------
 .../java/org/apache/james/user/api/model/User.java    |  7 +++++++
 .../user/cassandra/CassandraUsersRepository.java      |  2 +-
 .../james/user/file/UsersFileRepositoryTest.java      |  5 +++++
 .../user/jdbc/DefaultUsersJdbcRepositoryTest.java     |  6 ++++++
 .../james/user/jdbc/JamesUsersJdbcRepositoryTest.java |  6 ++++++
 .../james/user/lib/AbstractUsersRepositoryTest.java   | 14 ++++++++++++++
 .../james/user/memory/MemoryUsersRepository.java      |  2 +-
 7 files changed, 40 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/3e97f941/server/data/data-api/src/main/java/org/apache/james/user/api/model/User.java
----------------------------------------------------------------------
diff --git a/server/data/data-api/src/main/java/org/apache/james/user/api/model/User.java b/server/data/data-api/src/main/java/org/apache/james/user/api/model/User.java
index 51d7450..fe92c3e 100644
--- a/server/data/data-api/src/main/java/org/apache/james/user/api/model/User.java
+++ b/server/data/data-api/src/main/java/org/apache/james/user/api/model/User.java
@@ -49,4 +49,11 @@ public interface User {
      * @return true if newPass successfully added
      */
     boolean setPassword(String newPass);
+
+    default boolean hasUsername(String username) {
+        org.apache.james.core.User thisUser = org.apache.james.core.User.fromUsername(getUserName());
+        org.apache.james.core.User thatUser = org.apache.james.core.User.fromUsername(username);
+
+        return thisUser.equals(thatUser);
+    }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/3e97f941/server/data/data-cassandra/src/main/java/org/apache/james/user/cassandra/CassandraUsersRepository.java
----------------------------------------------------------------------
diff --git a/server/data/data-cassandra/src/main/java/org/apache/james/user/cassandra/CassandraUsersRepository.java b/server/data/data-cassandra/src/main/java/org/apache/james/user/cassandra/CassandraUsersRepository.java
index 3a49f9f..45504ab 100644
--- a/server/data/data-cassandra/src/main/java/org/apache/james/user/cassandra/CassandraUsersRepository.java
+++ b/server/data/data-cassandra/src/main/java/org/apache/james/user/cassandra/CassandraUsersRepository.java
@@ -123,7 +123,7 @@ public class CassandraUsersRepository extends AbstractUsersRepository {
             .join();
         return Optional.ofNullable(result.one())
             .map(row -> new DefaultUser(row.getString(REALNAME), row.getString(PASSWORD), row.getString(ALGORITHM)))
-            .filter(user -> user.getUserName().equals(name))
+            .filter(user -> user.hasUsername(name))
             .orElse(null);
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/3e97f941/server/data/data-file/src/test/java/org/apache/james/user/file/UsersFileRepositoryTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-file/src/test/java/org/apache/james/user/file/UsersFileRepositoryTest.java b/server/data/data-file/src/test/java/org/apache/james/user/file/UsersFileRepositoryTest.java
index a2826cf..9de69af 100644
--- a/server/data/data-file/src/test/java/org/apache/james/user/file/UsersFileRepositoryTest.java
+++ b/server/data/data-file/src/test/java/org/apache/james/user/file/UsersFileRepositoryTest.java
@@ -111,4 +111,9 @@ public class UsersFileRepositoryTest extends AbstractUsersRepositoryTest {
             LifecycleUtil.dispose(this.usersRepository);
         }
     }
+
+    @Ignore
+    @Override
+    public void testShouldReturnTrueWhenAUserHasACorrectPasswordAndOtherCaseInDomain() throws Exception {
+    }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/3e97f941/server/data/data-jdbc/src/test/java/org/apache/james/user/jdbc/DefaultUsersJdbcRepositoryTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-jdbc/src/test/java/org/apache/james/user/jdbc/DefaultUsersJdbcRepositoryTest.java b/server/data/data-jdbc/src/test/java/org/apache/james/user/jdbc/DefaultUsersJdbcRepositoryTest.java
index 6d4bbb3..be785fe 100644
--- a/server/data/data-jdbc/src/test/java/org/apache/james/user/jdbc/DefaultUsersJdbcRepositoryTest.java
+++ b/server/data/data-jdbc/src/test/java/org/apache/james/user/jdbc/DefaultUsersJdbcRepositoryTest.java
@@ -32,6 +32,7 @@ import org.apache.james.user.api.UsersRepositoryException;
 import org.apache.james.user.lib.AbstractUsersRepository;
 import org.junit.After;
 import org.junit.Before;
+import org.junit.Ignore;
 
 /**
  * Test basic behaviors of UsersFileRepository
@@ -97,4 +98,9 @@ public class DefaultUsersJdbcRepositoryTest extends AbstractUsersJdbcRepositoryT
         LifecycleUtil.dispose(this.usersRepository);
     }
 
+    @Ignore
+    @Override
+    public void testShouldReturnTrueWhenAUserHasACorrectPasswordAndOtherCaseInDomain() throws Exception {
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/3e97f941/server/data/data-jdbc/src/test/java/org/apache/james/user/jdbc/JamesUsersJdbcRepositoryTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-jdbc/src/test/java/org/apache/james/user/jdbc/JamesUsersJdbcRepositoryTest.java b/server/data/data-jdbc/src/test/java/org/apache/james/user/jdbc/JamesUsersJdbcRepositoryTest.java
index a1f8e89..66e9fd4 100644
--- a/server/data/data-jdbc/src/test/java/org/apache/james/user/jdbc/JamesUsersJdbcRepositoryTest.java
+++ b/server/data/data-jdbc/src/test/java/org/apache/james/user/jdbc/JamesUsersJdbcRepositoryTest.java
@@ -32,6 +32,7 @@ import org.apache.james.user.api.UsersRepositoryException;
 import org.apache.james.user.lib.AbstractUsersRepository;
 import org.junit.After;
 import org.junit.Before;
+import org.junit.Ignore;
 
 /**
  * Test basic behaviors of UsersFileRepository
@@ -96,4 +97,9 @@ public class JamesUsersJdbcRepositoryTest extends AbstractUsersJdbcRepositoryTes
         LifecycleUtil.dispose(this.usersRepository);
     }
 
+    @Ignore
+    @Override
+    public void testShouldReturnTrueWhenAUserHasACorrectPasswordAndOtherCaseInDomain() throws Exception {
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/3e97f941/server/data/data-library/src/test/java/org/apache/james/user/lib/AbstractUsersRepositoryTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-library/src/test/java/org/apache/james/user/lib/AbstractUsersRepositoryTest.java b/server/data/data-library/src/test/java/org/apache/james/user/lib/AbstractUsersRepositoryTest.java
index 83b1bbc..760c96d 100644
--- a/server/data/data-library/src/test/java/org/apache/james/user/lib/AbstractUsersRepositoryTest.java
+++ b/server/data/data-library/src/test/java/org/apache/james/user/lib/AbstractUsersRepositoryTest.java
@@ -194,6 +194,20 @@ public abstract class AbstractUsersRepositoryTest {
     }
     
     @Test
+    public void testShouldReturnTrueWhenAUserHasACorrectPasswordAndOtherCaseInDomain() throws Exception { 
+        usersRepository.setEnableVirtualHosting(true);
+
+        domainList.addDomain(Domain.of("jAmEs.oRg"));
+        String username = "myuser";
+        String password = "password";
+        usersRepository.addUser(username + "@jAmEs.oRg", password);
+
+        boolean actual = usersRepository.test(username + "@james.org", password);
+
+        assertThat(actual).isTrue();
+    }
+
+    @Test
     public void testShouldReturnFalseWhenAUserHasAnIncorrectPassword() throws UsersRepositoryException { 
         //Given
         usersRepository.addUser(user1, "password");

http://git-wip-us.apache.org/repos/asf/james-project/blob/3e97f941/server/data/data-memory/src/main/java/org/apache/james/user/memory/MemoryUsersRepository.java
----------------------------------------------------------------------
diff --git a/server/data/data-memory/src/main/java/org/apache/james/user/memory/MemoryUsersRepository.java b/server/data/data-memory/src/main/java/org/apache/james/user/memory/MemoryUsersRepository.java
index 7c8b03a..500ee78 100644
--- a/server/data/data-memory/src/main/java/org/apache/james/user/memory/MemoryUsersRepository.java
+++ b/server/data/data-memory/src/main/java/org/apache/james/user/memory/MemoryUsersRepository.java
@@ -102,7 +102,7 @@ public class MemoryUsersRepository extends AbstractUsersRepository {
 
     @Override
     public boolean test(String name, final String password) throws UsersRepositoryException {
-        return Optional.ofNullable(userByName.get(name))
+        return Optional.ofNullable(userByName.get(org.apache.james.core.User.fromUsername(name).asString()))
             .map(user -> user.verifyPassword(password))
             .orElse(false);
     }


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