Skip to content

Commit 6f04fca

Browse files
committed
Ensure to find users by eq token
1 parent c9fb94c commit 6f04fca

3 files changed

Lines changed: 25 additions & 1 deletion

File tree

  • core
    • persistence-jpa/src
      • main/java/org/apache/syncope/core/persistence/jpa/dao/repo
      • test/java/org/apache/syncope/core/persistence/jpa/inner
    • persistence-neo4j/src/test/java/org/apache/syncope/core/persistence/neo4j/inner

‎core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/repo/UserRepo.java‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public interface UserRepo
4040
@Override
4141
Optional<String> findUsername(@Param("key") String key);
4242

43-
@Query("SELECT e FROM #{#entityName} e WHERE e.token LIKE :token")
43+
@Query("SELECT e FROM #{#entityName} e WHERE e.token = :token")
4444
@Override
4545
Optional<? extends User> findByToken(@Param("token") String token);
4646

‎core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/UserTest.java‎

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,18 @@ public void findUsername() {
9090
@Test
9191
public void findByToken() {
9292
assertTrue(userDAO.findByToken("WRONG TOKEN").isEmpty());
93+
94+
User user = userDAO.findById("823074dc-d280-436d-a7dd-07399fae48ec").orElseThrow();
95+
user.generateToken(32, 60);
96+
user = userDAO.save(user);
97+
98+
String token = user.getToken();
99+
assertEquals(user.getKey(), userDAO.findByToken(token).orElseThrow().getKey());
100+
101+
// wildcards must not be interpreted as such, or tokens could be guessed character by character
102+
assertTrue(userDAO.findByToken(token.substring(0, token.length() - 1) + "%").isEmpty());
103+
assertTrue(userDAO.findByToken("%").isEmpty());
104+
assertTrue(userDAO.findByToken("_").isEmpty());
93105
}
94106

95107
@Test

‎core/persistence-neo4j/src/test/java/org/apache/syncope/core/persistence/neo4j/inner/UserTest.java‎

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,18 @@ public void findUsername() {
9090
@Test
9191
public void findByToken() {
9292
assertTrue(userDAO.findByToken("WRONG TOKEN").isEmpty());
93+
94+
User user = userDAO.findById("823074dc-d280-436d-a7dd-07399fae48ec").orElseThrow();
95+
user.generateToken(32, 60);
96+
user = userDAO.save(user);
97+
98+
String token = user.getToken();
99+
assertEquals(user.getKey(), userDAO.findByToken(token).orElseThrow().getKey());
100+
101+
// wildcards must not be interpreted as such, or tokens could be guessed character by character
102+
assertTrue(userDAO.findByToken(token.substring(0, token.length() - 1) + "%").isEmpty());
103+
assertTrue(userDAO.findByToken("%").isEmpty());
104+
assertTrue(userDAO.findByToken("_").isEmpty());
93105
}
94106

95107
@Test

0 commit comments

Comments
 (0)