From bc64407364cf654d6cd61e533d0850580b38e5c8 Mon Sep 17 00:00:00 2001 From: tge20 <72377965+tge20@users.noreply.github.com> Date: Mon, 14 Dec 2020 12:16:39 +0100 Subject: [PATCH] TSK-1423: Implemented the option to search for an Access Id by the full name of the user. (#1361) --- .../src/main/resources/taskana-test.ldif | 13 +++++++++++++ .../src/test/resources/application.properties | 1 + .../src/main/resources/application-db2.properties | 1 + .../main/resources/application-postgres.properties | 1 + .../src/main/resources/application.properties | 1 + .../src/main/resources/taskana-example.ldif | 13 +++++++++++++ .../src/test/java/pro/taskana/ldap/LdapTest.java | 9 +++++++++ .../src/test/resources/application.properties | 1 + .../main/resources/application-postgres.properties | 1 + .../src/main/resources/application.properties | 1 + .../test/resources/application-postgres.properties | 1 + .../src/test/resources/application.properties | 1 + .../pro/taskana/common/rest/ldap/LdapClient.java | 5 +++++ .../pro/taskana/common/rest/ldap/LdapSettings.java | 1 + .../taskana/common/rest/ldap/LdapClientTest.java | 2 +- .../src/test/resources/application.properties | 1 + 16 files changed, 52 insertions(+), 1 deletion(-) diff --git a/common/taskana-common-test/src/main/resources/taskana-test.ldif b/common/taskana-common-test/src/main/resources/taskana-test.ldif index 5c7855456..23032e776 100644 --- a/common/taskana-common-test/src/main/resources/taskana-test.ldif +++ b/common/taskana-common-test/src/main/resources/taskana-test.ldif @@ -119,6 +119,19 @@ ou: Organisationseinheit/Organisationseinheit KSC/Organisationseinheit KSC 1 cn: Elena Eifrig userPassword: user-1-2 +dn: uid=user-1-3,cn=users,OU=Test,O=TASKANA +objectclass: inetorgperson +objectclass: organizationalperson +objectclass: person +objectclass: top +givenName: Elena +description: desc +uid: user-1-3 +sn: Faul +ou: Organisationseinheit/Organisationseinheit KSC/Organisationseinheit KSC 1 +cn: Elena Faul +userPassword: user-1-3 + dn: uid=Max,cn=users,OU=Test,O=TASKANA objectclass: inetorgperson objectclass: organizationalperson diff --git a/history/taskana-simplehistory-rest-spring/src/test/resources/application.properties b/history/taskana-simplehistory-rest-spring/src/test/resources/application.properties index 75ba88180..77851d23a 100644 --- a/history/taskana-simplehistory-rest-spring/src/test/resources/application.properties +++ b/history/taskana-simplehistory-rest-spring/src/test/resources/application.properties @@ -12,6 +12,7 @@ taskana.ldap.userSearchFilterName=objectclass taskana.ldap.userSearchFilterValue=person taskana.ldap.userFirstnameAttribute=givenName taskana.ldap.userLastnameAttribute=sn +taskana.ldap.userFullnameAttribute=cn taskana.ldap.userIdAttribute=uid taskana.ldap.groupSearchBase=cn=groups taskana.ldap.groupSearchFilterName=objectclass diff --git a/rest/taskana-rest-spring-example-boot/src/main/resources/application-db2.properties b/rest/taskana-rest-spring-example-boot/src/main/resources/application-db2.properties index 32f5f402a..c9b37642a 100644 --- a/rest/taskana-rest-spring-example-boot/src/main/resources/application-db2.properties +++ b/rest/taskana-rest-spring-example-boot/src/main/resources/application-db2.properties @@ -61,6 +61,7 @@ taskana.ldap.userSearchFilterName=objectclass taskana.ldap.userSearchFilterValue=person taskana.ldap.userFirstnameAttribute=givenName taskana.ldap.userLastnameAttribute=sn +taskana.ldap.userFullnameAttribute=cn taskana.ldap.userIdAttribute=uid taskana.ldap.groupSearchBase=cn=groups taskana.ldap.groupSearchFilterName=objectclass diff --git a/rest/taskana-rest-spring-example-boot/src/main/resources/application-postgres.properties b/rest/taskana-rest-spring-example-boot/src/main/resources/application-postgres.properties index e1e9978f8..1f740cc46 100644 --- a/rest/taskana-rest-spring-example-boot/src/main/resources/application-postgres.properties +++ b/rest/taskana-rest-spring-example-boot/src/main/resources/application-postgres.properties @@ -44,6 +44,7 @@ taskana.ldap.userSearchFilterName=objectclass taskana.ldap.userSearchFilterValue=person taskana.ldap.userFirstnameAttribute=givenName taskana.ldap.userLastnameAttribute=sn +taskana.ldap.userFullnameAttribute=cn taskana.ldap.userIdAttribute=uid taskana.ldap.groupSearchBase=ou=groups taskana.ldap.groupSearchFilterName=objectclass diff --git a/rest/taskana-rest-spring-example-boot/src/main/resources/application.properties b/rest/taskana-rest-spring-example-boot/src/main/resources/application.properties index 811c8a683..755da7800 100644 --- a/rest/taskana-rest-spring-example-boot/src/main/resources/application.properties +++ b/rest/taskana-rest-spring-example-boot/src/main/resources/application.properties @@ -61,6 +61,7 @@ taskana.ldap.userSearchFilterName=objectclass taskana.ldap.userSearchFilterValue=person taskana.ldap.userFirstnameAttribute=givenName taskana.ldap.userLastnameAttribute=sn +taskana.ldap.userFullnameAttribute=cn taskana.ldap.userIdAttribute=uid taskana.ldap.groupSearchBase= taskana.ldap.groupSearchFilterName=objectclass diff --git a/rest/taskana-rest-spring-example-common/src/main/resources/taskana-example.ldif b/rest/taskana-rest-spring-example-common/src/main/resources/taskana-example.ldif index 6cf12a1f6..347bb896a 100644 --- a/rest/taskana-rest-spring-example-common/src/main/resources/taskana-example.ldif +++ b/rest/taskana-rest-spring-example-common/src/main/resources/taskana-example.ldif @@ -119,6 +119,19 @@ ou: Organisationseinheit/Organisationseinheit KSC/Organisationseinheit KSC 1 cn: Elena Eifrig userPassword: user-1-2 +dn: uid=user-1-3,cn=users,OU=Test,O=TASKANA +objectclass: inetorgperson +objectclass: organizationalperson +objectclass: person +objectclass: top +givenName: Elena +description: desc +uid: user-1-3 +sn: Faul +ou: Organisationseinheit/Organisationseinheit KSC/Organisationseinheit KSC 1 +cn: Elena Faul +userPassword: user-1-3 + dn: uid=Max,cn=users,OU=Test,O=TASKANA objectclass: inetorgperson objectclass: organizationalperson diff --git a/rest/taskana-rest-spring-example-common/src/test/java/pro/taskana/ldap/LdapTest.java b/rest/taskana-rest-spring-example-common/src/test/java/pro/taskana/ldap/LdapTest.java index 2779824a9..aaa7888fe 100644 --- a/rest/taskana-rest-spring-example-common/src/test/java/pro/taskana/ldap/LdapTest.java +++ b/rest/taskana-rest-spring-example-common/src/test/java/pro/taskana/ldap/LdapTest.java @@ -24,4 +24,13 @@ class LdapTest { .containsExactlyInAnyOrder( "teamlead-1", "teamlead-2", "cn=ksc-teamleads,cn=groups,ou=Test,O=TASKANA"); } + + @Test + void should_findUserByWholeName_WhenSearchingWithLdapClient() throws Exception { + List usersAndGroups = ldapClient.searchUsersAndGroups("Elena"); + assertThat(usersAndGroups).hasSize(2); + + usersAndGroups = ldapClient.searchUsersAndGroups("Elena Faul"); + assertThat(usersAndGroups).hasSize(1); + } } diff --git a/rest/taskana-rest-spring-example-common/src/test/resources/application.properties b/rest/taskana-rest-spring-example-common/src/test/resources/application.properties index 53f28bb0d..4140c5140 100644 --- a/rest/taskana-rest-spring-example-common/src/test/resources/application.properties +++ b/rest/taskana-rest-spring-example-common/src/test/resources/application.properties @@ -25,6 +25,7 @@ taskana.ldap.userSearchFilterName=objectclass taskana.ldap.userSearchFilterValue=person taskana.ldap.userFirstnameAttribute=givenName taskana.ldap.userLastnameAttribute=sn +taskana.ldap.userFullnameAttribute=cn taskana.ldap.userIdAttribute=uid taskana.ldap.groupSearchBase=cn=groups taskana.ldap.groupSearchFilterName=objectclass diff --git a/rest/taskana-rest-spring-example-wildfly/src/main/resources/application-postgres.properties b/rest/taskana-rest-spring-example-wildfly/src/main/resources/application-postgres.properties index 25e00e0fe..583f964fc 100644 --- a/rest/taskana-rest-spring-example-wildfly/src/main/resources/application-postgres.properties +++ b/rest/taskana-rest-spring-example-wildfly/src/main/resources/application-postgres.properties @@ -13,6 +13,7 @@ taskana.ldap.userSearchFilterName=objectclass taskana.ldap.userSearchFilterValue=person taskana.ldap.userFirstnameAttribute=givenName taskana.ldap.userLastnameAttribute=sn +taskana.ldap.userFullnameAttribute=cn taskana.ldap.userIdAttribute=uid taskana.ldap.groupSearchBase=ou=groups taskana.ldap.groupSearchFilterName=objectclass diff --git a/rest/taskana-rest-spring-example-wildfly/src/main/resources/application.properties b/rest/taskana-rest-spring-example-wildfly/src/main/resources/application.properties index a3f4c6ad2..cf1dd1c08 100644 --- a/rest/taskana-rest-spring-example-wildfly/src/main/resources/application.properties +++ b/rest/taskana-rest-spring-example-wildfly/src/main/resources/application.properties @@ -13,6 +13,7 @@ taskana.ldap.userSearchFilterName=objectclass taskana.ldap.userSearchFilterValue=person taskana.ldap.userFirstnameAttribute=givenName taskana.ldap.userLastnameAttribute=sn +taskana.ldap.userFullnameAttribute=cn taskana.ldap.userIdAttribute=uid taskana.ldap.groupSearchBase= taskana.ldap.groupSearchFilterName=objectclass diff --git a/rest/taskana-rest-spring-example-wildfly/src/test/resources/application-postgres.properties b/rest/taskana-rest-spring-example-wildfly/src/test/resources/application-postgres.properties index df080c351..727f1a4ad 100644 --- a/rest/taskana-rest-spring-example-wildfly/src/test/resources/application-postgres.properties +++ b/rest/taskana-rest-spring-example-wildfly/src/test/resources/application-postgres.properties @@ -17,6 +17,7 @@ taskana.ldap.userSearchFilterName=objectclass taskana.ldap.userSearchFilterValue=person taskana.ldap.userFirstnameAttribute=givenName taskana.ldap.userLastnameAttribute=sn +taskana.ldap.userFullnameAttribute=cn taskana.ldap.userIdAttribute=uid taskana.ldap.groupSearchBase= taskana.ldap.groupSearchFilterName=objectclass diff --git a/rest/taskana-rest-spring-example-wildfly/src/test/resources/application.properties b/rest/taskana-rest-spring-example-wildfly/src/test/resources/application.properties index 3723cd88b..3e9255195 100644 --- a/rest/taskana-rest-spring-example-wildfly/src/test/resources/application.properties +++ b/rest/taskana-rest-spring-example-wildfly/src/test/resources/application.properties @@ -17,6 +17,7 @@ taskana.ldap.userSearchFilterName=objectclass taskana.ldap.userSearchFilterValue=person taskana.ldap.userFirstnameAttribute=givenName taskana.ldap.userLastnameAttribute=sn +taskana.ldap.userFullnameAttribute=cn taskana.ldap.userIdAttribute=uid taskana.ldap.groupSearchBase= taskana.ldap.groupSearchFilterName=objectclass diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/common/rest/ldap/LdapClient.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/common/rest/ldap/LdapClient.java index 399a3daf3..c33715896 100644 --- a/rest/taskana-rest-spring/src/main/java/pro/taskana/common/rest/ldap/LdapClient.java +++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/common/rest/ldap/LdapClient.java @@ -95,6 +95,7 @@ public class LdapClient { orFilter.or(new WhitespaceWildcardsFilter(getUserFirstnameAttribute(), name)); orFilter.or(new WhitespaceWildcardsFilter(getUserLastnameAttribute(), name)); + orFilter.or(new WhitespaceWildcardsFilter(getUserFullnameAttribute(), name)); orFilter.or(new WhitespaceWildcardsFilter(getUserIdAttribute(), name)); andFilter.and(orFilter); @@ -383,6 +384,10 @@ public class LdapClient { return dn; } + private String getUserFullnameAttribute() { + return LdapSettings.TASKANA_LDAP_USER_FULLNAME_ATTRIBUTE.getValueFromEnv(env); + } + /** Context Mapper for user entries. */ class GroupContextMapper extends AbstractContextMapper { diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/common/rest/ldap/LdapSettings.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/common/rest/ldap/LdapSettings.java index 431d1bc5e..4a53334e8 100644 --- a/rest/taskana-rest-spring/src/main/java/pro/taskana/common/rest/ldap/LdapSettings.java +++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/common/rest/ldap/LdapSettings.java @@ -9,6 +9,7 @@ enum LdapSettings { TASKANA_LDAP_USER_SEARCH_FILTER_VALUE("taskana.ldap.userSearchFilterValue"), TASKANA_LDAP_USER_FIRSTNAME_ATTRIBUTE("taskana.ldap.userFirstnameAttribute"), TASKANA_LDAP_USER_LASTNAME_ATTRIBUTE("taskana.ldap.userLastnameAttribute"), + TASKANA_LDAP_USER_FULLNAME_ATTRIBUTE("taskana.ldap.userFullnameAttribute"), TASKANA_LDAP_USER_ID_ATTRIBUTE("taskana.ldap.userIdAttribute"), TASKANA_LDAP_GROUP_SEARCH_BASE("taskana.ldap.groupSearchBase"), TASKANA_LDAP_BASE_DN("taskana.ldap.baseDn"), diff --git a/rest/taskana-rest-spring/src/test/java/pro/taskana/common/rest/ldap/LdapClientTest.java b/rest/taskana-rest-spring/src/test/java/pro/taskana/common/rest/ldap/LdapClientTest.java index a3c266ff9..86d3a2192 100644 --- a/rest/taskana-rest-spring/src/test/java/pro/taskana/common/rest/ldap/LdapClientTest.java +++ b/rest/taskana-rest-spring/src/test/java/pro/taskana/common/rest/ldap/LdapClientTest.java @@ -136,7 +136,7 @@ class LdapClientTest { {"taskana.ldap.userIdAttribute", "uid"}, {"taskana.ldap.userLastnameAttribute", "sn"}, {"taskana.ldap.userFirstnameAttribute", "givenName"}, - {"taskana.ldap.userFirstnameAttribute", "givenName"}, + {"taskana.ldap.userFullnameAttribute", "cn"}, {"taskana.ldap.userSearchFilterValue", "person"} }) .forEach( diff --git a/rest/taskana-rest-spring/src/test/resources/application.properties b/rest/taskana-rest-spring/src/test/resources/application.properties index 87009b0a9..e95133a31 100644 --- a/rest/taskana-rest-spring/src/test/resources/application.properties +++ b/rest/taskana-rest-spring/src/test/resources/application.properties @@ -24,6 +24,7 @@ taskana.ldap.userSearchFilterName=objectclass taskana.ldap.userSearchFilterValue=person taskana.ldap.userFirstnameAttribute=givenName taskana.ldap.userLastnameAttribute=sn +taskana.ldap.userFullnameAttribute=cn taskana.ldap.userIdAttribute=uid taskana.ldap.groupSearchBase= taskana.ldap.groupSearchFilterName=objectclass