TSK-497 implement Ldap access
This commit is contained in:
parent
ce490f17ce
commit
c92542e362
|
@ -3,7 +3,7 @@ CREATE TABLE TASKANA.TASKANA_SCHEMA_VERSION(
|
|||
VERSION VARCHAR(255) NOT NULL,
|
||||
PRIMARY KEY (ID)
|
||||
);
|
||||
INSERT INTO TASKANA.TASKANA_SCHEMA_VERSION VALUES ('1', '0.1.2');
|
||||
INSERT INTO TASKANA.TASKANA_SCHEMA_VERSION VALUES ('1', '0.1.5');
|
||||
|
||||
CREATE TABLE TASKANA.CLASSIFICATION(
|
||||
ID CHAR(40) NOT NULL,
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
||||
<java.version>1.8</java.version>
|
||||
<spring.ldap.version>2.3.2.RELEASE</spring.ldap.version>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
|
@ -47,6 +48,11 @@
|
|||
<groupId>org.springframework.plugin</groupId>
|
||||
<artifactId>spring-plugin-core</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.ldap</groupId>
|
||||
<artifactId>spring-ldap-core</artifactId>
|
||||
<version>${spring.ldap.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.h2database</groupId>
|
||||
<artifactId>h2</artifactId>
|
||||
|
@ -68,6 +74,18 @@
|
|||
<artifactId>spring-boot-starter-test</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.ldap</groupId>
|
||||
<artifactId>spring-ldap-test</artifactId>
|
||||
<version>${spring.ldap.version}</version>
|
||||
<scope>test</scope>
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
<artifactId>commons-logging</artifactId>
|
||||
<groupId>commons-logging</groupId>
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<build>
|
||||
<plugins>
|
||||
|
|
|
@ -0,0 +1,286 @@
|
|||
package pro.taskana.ldap;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import pro.taskana.rest.resource.AccessIdResource;
|
||||
|
||||
/**
|
||||
* Implementation of LdapCache used for Unit tests.
|
||||
*
|
||||
* @author bbr
|
||||
*/
|
||||
public class LdapCacheTestImpl implements LdapCache {
|
||||
|
||||
@Override
|
||||
public List<AccessIdResource> findMatchingAccessId(String searchFor) {
|
||||
List<AccessIdResource> result = accessIds.stream()
|
||||
.filter(t -> (t.getName().toLowerCase().contains(searchFor.toLowerCase())
|
||||
|| t.getAccessId().toLowerCase().contains(searchFor.toLowerCase())))
|
||||
.collect(Collectors.toList());
|
||||
return result;
|
||||
}
|
||||
|
||||
private static List<AccessIdResource> accessIds = new ArrayList<>(Arrays.asList(
|
||||
new AccessIdResource("Rojas, Miguel", "cn=Miguel Rojas,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Lengl, Marcel", "cn=Marcel Lengl,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Zorgati, Mustapha", "cn=Mustapha Zorgati,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Breier, Bernd", "cn=Bernd Breier,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Meyer, Dominik", "cn=Dominik Meyer,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Hagen, Holger", "cn=Holger Hagen,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Behrendt, Maximilian", "cn=Maximilian Behrendt,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Ferrante, Elena", "cn=Elena Ferrante,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Mueller, Simone", "cn=Simone Mueller,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Sirup, Aaron", "cn=Aaron Sirup,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Kahn, Ada", "cn=Ada Kahn,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Lass, Ada", "cn=Ada Lass,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Tion, Addi", "cn=Addi Tion,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Lette, Adi", "cn=Adi Lette,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Native, Alter", "cn=Alter Native,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Herum, Albert", "cn=Albert Herum,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Bert, Ali", "cn=Ali Bert,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Mente, Ali", "cn=Ali Mente,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Mater, Alma", "cn=Alma Mater,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Nach, Alma", "cn=Alma Nach,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Gehzauch, Anders", "cn=Anders Gehzauch,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Theke, Andi", "cn=Andi Theke,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Kreuz, Andreas", "cn=Andreas Kreuz,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Kette, Anka", "cn=Anka Kette,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Tiefsee, Anka", "cn=Anka Tiefsee,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Fielmalz, Anke", "cn=Anke Fielmalz,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Fassen, Ann", "cn=Ann Fassen,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Probe, Ann", "cn=Ann Probe,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Bolika, Anna", "cn=Anna Bolika,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Ecke, Anna", "cn=Anna Ecke,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Hosi, Anna", "cn=Anna Hosi,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Kronis-Tisch, Anna", "cn=Anna Kronis-Tisch,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Logie, Anna", "cn=Anna Logie,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Luehse, Anna", "cn=Anna Luehse,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Nass, Anna", "cn=Anna Nass,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Thalb, Anna", "cn=Anna Thalb,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Tomie, Anna", "cn=Anna Tomie,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Donnich, Anne", "cn=Anne Donnich,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Kaffek, Anne", "cn=Anne Kaffek,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Thek, Anne", "cn=Anne Thek,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Matoer, Anni", "cn=Anni Matoer,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Ragentor, Ansgar", "cn=Ansgar Ragentor,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Stoteles, Ari", "cn=Ari Stoteles,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Thmetik, Ari", "cn=Ari Thmetik,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Nuehm, Arno", "cn=Arno Nuehm,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Schocke, Artie", "cn=Artie Schocke,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Stoppel, Bart", "cn=Bart Stoppel,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Beitung, Bea", "cn=Bea Beitung,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Ildich, Bea", "cn=Bea Ildich,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Vista, Bella", "cn=Bella Vista,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Utzer, Ben", "cn=Ben Utzer,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Zien, Ben", "cn=Ben Zien,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Stein, Bernd", "cn=Bernd Stein,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Deramen, Bill", "cn=Bill Deramen,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Honig, Bine", "cn=Bine Honig,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Densatz, Bo", "cn=Bo Densatz,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Densee, Bo", "cn=Bo Densee,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Lerwagen, Bo", "cn=Bo Lerwagen,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Tail, Bob", "cn=Bob Tail,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Ketta, Bruce", "cn=Bruce Ketta,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Terrie, Bud", "cn=Bud Terrie,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Biener-Haken, Cara", "cn=iener- Cara Haken,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Ass, Caro", "cn=Caro Ass,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Kaffee, Caro", "cn=Caro Kaffee,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Linger, Caro", "cn=Caro Linger,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("tenSaft, Caro", "cn=Caro tenSaft,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Antheme, Chris", "cn=Chris Antheme,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Baum, Chris", "cn=Chris Baum,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Tall, Chris", "cn=Chris Tall,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Reiniger, Claas", "cn=Claas Reiniger,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Grube, Claire", "cn=Claire Grube,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Fall, Clara", "cn=Clara Fall,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Korn, Clara", "cn=Clara Korn,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Lenriff, Cora", "cn=Cora Lenriff,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Schiert, Cora", "cn=Cora Schiert,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Hose, Cord", "cn=Cord Hose,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Onbleu, Cord", "cn=Cord Onbleu,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Umkleide, Damon", "cn=Damon Umkleide,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Affier, Dean", "cn=Dean Affier,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Orm, Dean", "cn=Dean Orm,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Platz, Dennis", "cn=Dennis Platz,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Milch, Dick", "cn=Dick Milch,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Mow, Dina", "cn=Dina Mow,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Keil, Donna", "cn=Donna Keil,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Littchen, Donna", "cn=Donna Littchen,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Wetter, Donna", "cn=Donna Wetter,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Was, Ed", "cn=Ed Was,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Khar, Ede", "cn=Ede Khar,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Nut, Ella", "cn=Ella Nut,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Stisch, Ella", "cn=Ella Stisch,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Diel, Emma", "cn=Emma Diel,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Herdamit, Emma", "cn=Emma Herdamit,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Mitter-Uhe, Emma", "cn=Emma Mitter-Uhe,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Tatt, Erich", "cn=Erich Tatt,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Drigend, Ernie", "cn=Ernie Drigend,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Poly, Esther", "cn=Esther Poly,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Trautz, Eugen", "cn=Eugen Trautz,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Quiert, Eva", "cn=Eva Quiert,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Inurlaub, Fatma", "cn=Fatma Inurlaub,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Land, Finn", "cn=Finn Land,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Sternis, Finn", "cn=Finn Sternis,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Furt, Frank", "cn=Frank Furt,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Reich, Frank", "cn=Frank Reich,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Iskaner, Franz", "cn=Franz Iskaner,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Nerr, Franziska", "cn=Franziska Nerr,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Zafen, Friedrich", "cn=Friedrich Zafen,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Pomm, Fritz", "cn=Fritz Pomm,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("deWegs, Gera", "cn=Gera deWegs,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Staebe, Gitta", "cn=Gitta Staebe,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Zend, Glenn", "cn=Glenn Zend,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Fisch, Grete", "cn=Grete Fisch,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Zucker, Gus", "cn=Gus Zucker,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Muhn, Hanni", "cn=Hanni Muhn,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Fermesse, Hanno", "cn=Hanno Fermesse,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Aplast, Hans", "cn=Hans Aplast,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Eart, Hans", "cn=Hans Eart,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Back, Hardy", "cn=Hardy Back,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Beau, Harry", "cn=Harry Beau,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Kraut, Heide", "cn=Heide Kraut,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Witzka, Heide", "cn=Heide Witzka,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Buchen, Hein", "cn=Hein Buchen,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Lichkeit, Hein", "cn=Hein Lichkeit,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Suchung, Hein", "cn=Hein Suchung,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Ellmann, Heinz", "cn=Heinz Ellmann,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Ketchup, Heinz", "cn=Heinz Ketchup,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Zeim, Hilde", "cn=Hilde Zeim,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Bilien, Immo", "cn=Immo Bilien,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Her, Inge", "cn=Inge Her,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Wahrsam, Inge", "cn=Inge Wahrsam,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Flamm, Ingo", "cn=Ingo Flamm,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Enzien, Ingrid", "cn=Ingrid Enzien,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Rohsch, Inken", "cn=Inken Rohsch,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Ihr, Insa", "cn=Insa Ihr,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Nerda, Iska", "cn=Iska Nerda,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Eitz, Jens", "cn=Jens Eitz,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Nastik, Jim", "cn=Jim Nastik,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Gurt, Jo", "cn=Jo Gurt,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Kurrth, Jo", "cn=Jo Kurrth,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Kolade, Joe", "cn=Joe Kolade,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Iter, Johann", "cn=Johann Iter,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Tick, Joyce", "cn=Joyce Tick,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Case, Justin", "cn=Justin Case,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Time, Justin", "cn=Justin Time,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Komp, Jutta", "cn=Jutta Komp,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Mauer, Kai", "cn=Kai Mauer,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Pirinja, Kai", "cn=Kai Pirinja,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Serpfalz, Kai", "cn=Kai Serpfalz,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Auer, Karl", "cn=Karl Auer,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Ielauge, Karl", "cn=Karl Ielauge,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Ifornjen, Karl", "cn=Karl Ifornjen,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Radi, Karl", "cn=Karl Radi,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Verti, Karl", "cn=Karl Verti,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Sery, Karo", "cn=Karo Sery,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Lisator, Katha", "cn=Katha Lisator,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Flo, Kati", "cn=Kati Flo,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Schenn, Knut", "cn=Knut Schenn,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Achse, Kurt", "cn=Kurt Achse,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Zepause, Kurt", "cn=Kurt Zepause,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Zerr, Kurt", "cn=Kurt Zerr,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Reden, Lasse", "cn=Lasse Reden,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Metten, Lee", "cn=Lee Metten,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Arm, Lene", "cn=Lene Arm,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Thur, Linnea", "cn=Linnea Thur,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Bonn, Lisa", "cn=Lisa Bonn,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Sembourg, Luc", "cn=Luc Sembourg,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Rung, Lucky", "cn=Lucky Rung,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Zafen, Ludwig", "cn=Ludwig Zafen,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Hauden, Lukas", "cn=Lukas Hauden,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Hose, Lutz", "cn=Lutz Hose,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Tablette, Lutz", "cn=Lutz Tablette,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Fehr, Luzie", "cn=Luzie Fehr,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Nalyse, Magda", "cn=Magda Nalyse,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Ehfer, Maik", "cn=Maik Ehfer,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Sehr, Malte", "cn=Malte Sehr,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Thon, Mara", "cn=Mara Thon,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Quark, Marga", "cn=Marga Quark,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Nade, Marie", "cn=Marie Nade,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Niert, Marie", "cn=Marie Niert,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Neese, Mario", "cn=Mario Neese,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Nette, Marion", "cn=Marion Nette,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Nesium, Mark", "cn=Mark Nesium,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Thalle, Mark", "cn=Mark Thalle,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Diven, Marle", "cn=Marle Diven,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Fitz, Marle", "cn=Marle Fitz,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Pfahl, Marta", "cn=Marta Pfahl,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Zorn, Martin", "cn=Martin Zorn,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Krissmes, Mary", "cn=Mary Krissmes,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Jess, Matt", "cn=Matt Jess,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Strammer, Max", "cn=Max Strammer,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Mumm, Maxi", "cn=Maxi Mumm,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Morphose, Meta", "cn=Meta Morphose,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Uh, Mia", "cn=Mia Uh,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Rofon, Mike", "cn=Mike Rofon,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Rosoft, Mike", "cn=Mike Rosoft,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Liter, Milli", "cn=Milli Liter,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Thär, Milli", "cn=hä Milli r,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Welle, Mirko", "cn=Mirko Welle,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Thorat, Mo", "cn=Mo Thorat,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Thor, Moni", "cn=Moni Thor,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Kinolta, Monika", "cn=Monika Kinolta,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Mundhaar, Monika", "cn=Monika Mundhaar,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Munter, Monika", "cn=Monika Munter,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Zwerg, Nat", "cn=Nat Zwerg,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Elmine, Nick", "cn=Nick Elmine,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Thien, Niko", "cn=Niko Thien,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Pferd, Nils", "cn=Nils Pferd,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Lerweise, Norma", "cn=Norma Lerweise,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Motor, Otto", "cn=Otto Motor,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Totol, Otto", "cn=Otto Totol,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Nerr, Paula", "cn=Paula Nerr,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Imeter, Peer", "cn=Peer Imeter,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Serkatze, Peer", "cn=Peer Serkatze,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Gogisch, Peter", "cn=Peter Gogisch,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Silje, Peter", "cn=Peter Silje,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Harmonie, Phil", "cn=Phil Harmonie,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Ihnen, Philip", "cn=Philip Ihnen,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Uto, Pia", "cn=Pia Uto,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Kothek, Pina", "cn=Pina Kothek,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Zar, Pit", "cn=Pit Zar,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Zeih, Polly", "cn=Polly Zeih,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Tswan, Puh", "cn=Puh Tswan,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Zufall, Rainer", "cn=Rainer Zufall,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Lien, Rita", "cn=Rita Lien,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Held, Roman", "cn=Roman Held,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Haar, Ross", "cn=Ross Haar,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Dick, Roy", "cn=Roy Dick,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Enplaner, Ruth", "cn=Ruth Enplaner,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Kommen, Ryan", "cn=Ryan Kommen,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Philo, Sophie", "cn=Sophie Philo,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Matisier, Stig", "cn=Stig Matisier,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Loniki, Tessa", "cn=Tessa Loniki,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Tralisch, Thea", "cn=Thea Tralisch,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Logie, Theo", "cn=Theo Logie,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Ister, Thorn", "cn=Thorn Ister,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Buktu, Tim", "cn=Tim Buktu,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Ate, Tom", "cn=Tom Ate,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Pie, Udo", "cn=Udo Pie,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Aloe, Vera", "cn=Vera Aloe,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Hausver, Walter", "cn=Walter Hausver,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Schuh, Wanda", "cn=Wanda Schuh,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("Rahm, Wolf", "cn=Wolf Rahm,ou=people,o=TaskanaTest"),
|
||||
new AccessIdResource("DevelopersGroup", "cn=DevelopersGroup,ou=groups,o=TaskanaTest"),
|
||||
new AccessIdResource("UsersGroup", "cn=UsersGroup,ou=groups,o=TaskanaTest"),
|
||||
new AccessIdResource("sachbearbeiter", "cn=sachbearbeiter,ou=groups,o=TaskanaTest"),
|
||||
new AccessIdResource("leben", "cn=leben,ou=groups,o=TaskanaTest"),
|
||||
new AccessIdResource("chirurgie", "cn=chirurgie,ou=groups,o=TaskanaTest"),
|
||||
new AccessIdResource("zahn", "cn=zahn,ou=groups,o=TaskanaTest"),
|
||||
new AccessIdResource("knie", "cn=knie,ou=groups,o=TaskanaTest"),
|
||||
new AccessIdResource("schaden", "cn=schaden,ou=groups,o=TaskanaTest"),
|
||||
new AccessIdResource("kapital", "cn=kapital,ou=groups,o=TaskanaTest"),
|
||||
new AccessIdResource("ausland", "cn=ausland,ou=groups,o=TaskanaTest"),
|
||||
new AccessIdResource("teamlead", "cn=teamlead,ou=groups,o=TaskanaTest"),
|
||||
new AccessIdResource("gesundheit", "cn=gesundheit,ou=groups,o=TaskanaTest"),
|
||||
new AccessIdResource("vip", "cn=vip,ou=groups,o=TaskanaTest"),
|
||||
new AccessIdResource("manager", "cn=manager,ou=groups,o=TaskanaTest"),
|
||||
new AccessIdResource("kfz", "cn=kfz,ou=groups,o=TaskanaTest"),
|
||||
new AccessIdResource("haftpflicht", "cn=haftpflicht,ou=groups,o=TaskanaTest"),
|
||||
new AccessIdResource("bauspar", "cn=bauspar,ou=groups,o=TaskanaTest")));
|
||||
|
||||
}
|
|
@ -2,8 +2,10 @@ package pro.taskana.rest;
|
|||
|
||||
import java.sql.SQLException;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import javax.sql.DataSource;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
|
||||
|
@ -16,6 +18,8 @@ import org.springframework.jdbc.datasource.DataSourceTransactionManager;
|
|||
import org.springframework.scheduling.annotation.EnableScheduling;
|
||||
import org.springframework.transaction.PlatformTransactionManager;
|
||||
|
||||
import pro.taskana.ldap.LdapCacheTestImpl;
|
||||
import pro.taskana.ldap.LdapClient;
|
||||
import pro.taskana.sampledata.SampleDataGenerator;
|
||||
|
||||
/**
|
||||
|
@ -26,6 +30,9 @@ import pro.taskana.sampledata.SampleDataGenerator;
|
|||
@Import(RestConfiguration.class)
|
||||
public class ExampleRestApplication {
|
||||
|
||||
@Autowired
|
||||
private LdapClient ldapClient;
|
||||
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(ExampleRestApplication.class, args);
|
||||
}
|
||||
|
@ -56,4 +63,11 @@ public class ExampleRestApplication {
|
|||
sampleDataGenerator.generateSampleData();
|
||||
return sampleDataGenerator;
|
||||
}
|
||||
|
||||
@PostConstruct
|
||||
private void init() {
|
||||
if (!ldapClient.useLdap()) {
|
||||
AccessIdController.setLdapCache(new LdapCacheTestImpl());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -21,6 +21,7 @@ public class SampleDataGenerator {
|
|||
private static final Logger LOGGER = LoggerFactory.getLogger(SampleDataGenerator.class);
|
||||
private static final String SQL = "/sql";
|
||||
private static final String TEST_DATA = "/sample-data";
|
||||
private static final String CLEAR = SQL + TEST_DATA + "/clear-db.sql";
|
||||
private static final String TASK = SQL + TEST_DATA + "/task.sql";
|
||||
private static final String WORKBASKET = SQL + TEST_DATA + "/workbasket.sql";
|
||||
private static final String DISTRIBUTION_TARGETS = SQL + TEST_DATA + "/distribution-targets.sql";
|
||||
|
@ -42,6 +43,13 @@ public class SampleDataGenerator {
|
|||
|
||||
StringWriter errorWriter = new StringWriter();
|
||||
PrintWriter errorLogWriter = new PrintWriter(errorWriter);
|
||||
try {
|
||||
runner.setStopOnError(false);
|
||||
runner.runScript(new BufferedReader(
|
||||
new InputStreamReader(this.getClass().getResourceAsStream(CLEAR), StandardCharsets.UTF_8)));
|
||||
} catch (Exception e) {
|
||||
LOGGER.error("caught Exception {}", e);
|
||||
}
|
||||
|
||||
runner.setStopOnError(true);
|
||||
runner.setLogWriter(logWriter);
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,7 +1,25 @@
|
|||
logging.level.pro.taskana=DEBUG
|
||||
l###logging.level.org.springframework=DEBUG
|
||||
######## Taskana DB #######
|
||||
datasource.url=jdbc:h2:mem:taskana;IGNORECASE=TRUE;LOCK_MODE=0;INIT=CREATE SCHEMA IF NOT EXISTS TASKANA
|
||||
datasource.driverClassName=org.h2.Driver
|
||||
datasource.username=sa
|
||||
datasource.password=sa
|
||||
devMode=false
|
||||
devMode=false
|
||||
####### control LDAP usage
|
||||
taskana.ldap.useLdap=false
|
||||
####### properties to connect to LDAP
|
||||
taskana.ldap.serverUrl=ldap://localhost:10389
|
||||
taskana.ldap.bindDn=uid=admin,ou=system
|
||||
taskana.ldap.bindPassword=secret
|
||||
taskana.ldap.baseDn=o=TaskanaTest
|
||||
####### properties that control search for users and groups
|
||||
taskana.ldap.userSearchBase=ou=people
|
||||
taskana.ldap.userSearchFilterName=objectclass
|
||||
taskana.ldap.userSearchFilterValue=person
|
||||
taskana.ldap.userFirstnameAttribute=givenName
|
||||
taskana.ldap.userLastnameAttribute=sn
|
||||
taskana.ldap.groupSearchBase=ou=groups
|
||||
taskana.ldap.groupSearchFilterName=objectclass
|
||||
taskana.ldap.groupSearchFilterValue=groupOfUniqueNames
|
||||
taskana.ldap.groupNameAttribute=cn
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
-- the order is important!
|
||||
DELETE FROM TASKANA.ATTACHMENT;
|
||||
DELETE FROM TASKANA.TASK;
|
||||
DELETE FROM TASKANA.WORKBASKET_ACCESS_LIST;
|
||||
DELETE FROM TASKANA.WORKBASKET;
|
||||
DELETE FROM TASKANA.DISTRIBUTION_TARGETS;
|
||||
DELETE FROM TASKANA.CLASSIFICATION;
|
||||
DELETE FROM TASKANA.OBJECT_REFERENCE;
|
||||
DELETE FROM TASKANA.JOB;
|
||||
COMMIT;
|
|
@ -0,0 +1,33 @@
|
|||
package pro.taskana.ldap;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.junit4.SpringRunner;
|
||||
|
||||
import pro.taskana.rest.RestConfiguration;
|
||||
import pro.taskana.rest.resource.AccessIdResource;
|
||||
|
||||
@RunWith(SpringRunner.class)
|
||||
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT, properties = {"devMode=true"})
|
||||
@ContextConfiguration(classes = {RestConfiguration.class})
|
||||
public class LdapTest {
|
||||
|
||||
@Autowired
|
||||
private LdapClient ldapClient;
|
||||
|
||||
@Test
|
||||
public void testFindUsers() {
|
||||
if (ldapClient.useLdap()) {
|
||||
List<AccessIdResource> usersAndGroups = ldapClient.searchUsersAndGroups("ie");
|
||||
assertEquals(31, usersAndGroups.size());
|
||||
}
|
||||
}
|
||||
}
|
|
@ -29,7 +29,8 @@ import org.springframework.web.client.RestTemplate;
|
|||
import com.fasterxml.jackson.databind.DeserializationFeature;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
|
||||
import pro.taskana.rest.resource.AccessIdValidationResource;
|
||||
import pro.taskana.ldap.LdapCacheTestImpl;
|
||||
import pro.taskana.rest.resource.AccessIdResource;
|
||||
|
||||
@RunWith(SpringRunner.class)
|
||||
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT, properties = {"devMode=true"})
|
||||
|
@ -41,19 +42,21 @@ public class AccessIdValidationControllerTest {
|
|||
|
||||
@Test
|
||||
public void testGetMatches() {
|
||||
AccessIdController.setLdapCache(new LdapCacheTestImpl());
|
||||
RestTemplate template = getRestTemplate();
|
||||
HttpHeaders headers = new HttpHeaders();
|
||||
headers.add("Authorization", "Basic dGVhbWxlYWRfMTp0ZWFtbGVhZF8x");
|
||||
HttpEntity<String> request = new HttpEntity<String>(headers);
|
||||
ResponseEntity<List<AccessIdValidationResource>> response = template.exchange(
|
||||
"http://127.0.0.1:" + port + "/v1/validate-access-id?search=ali", HttpMethod.GET, request,
|
||||
new ParameterizedTypeReference<List<AccessIdValidationResource>>() {
|
||||
ResponseEntity<List<AccessIdResource>> response = template.exchange(
|
||||
"http://127.0.0.1:" + port + "/v1/access-ids?searchFor=ali", HttpMethod.GET, request,
|
||||
new ParameterizedTypeReference<List<AccessIdResource>>() {
|
||||
});
|
||||
List<AccessIdValidationResource> body = response.getBody();
|
||||
List<AccessIdResource> body = response.getBody();
|
||||
assertNotNull(body);
|
||||
List<String> expectedIds = new ArrayList<>(Arrays.asList("user008", "user009", "user248"));
|
||||
for (AccessIdValidationResource accessId : body) {
|
||||
assertTrue(expectedIds.contains(accessId.getAccessId()));
|
||||
assertTrue(3 == body.size());
|
||||
List<String> expectedIds = new ArrayList<>(Arrays.asList("Tralisch, Thea", "Bert, Ali", "Mente, Ali"));
|
||||
for (AccessIdResource accessId : body) {
|
||||
assertTrue(expectedIds.contains(accessId.getName()));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,262 +1,281 @@
|
|||
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<groupId>pro.taskana</groupId>
|
||||
<artifactId>taskana-rest-spring</artifactId>
|
||||
<version>0.1.5-SNAPSHOT</version>
|
||||
<groupId>pro.taskana</groupId>
|
||||
<artifactId>taskana-rest-spring</artifactId>
|
||||
<version>0.1.5-SNAPSHOT</version>
|
||||
|
||||
<name>${project.groupId}:${project.artifactId}</name>
|
||||
<description>The taskana rest logic.</description>
|
||||
<url>http://taskana.pro</url>
|
||||
<name>${project.groupId}:${project.artifactId}</name>
|
||||
<description>The taskana rest logic.</description>
|
||||
<url>http://taskana.pro</url>
|
||||
|
||||
<licenses>
|
||||
<license>
|
||||
<name>The Apache License, Version 2.0</name>
|
||||
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
|
||||
</license>
|
||||
</licenses>
|
||||
<licenses>
|
||||
<license>
|
||||
<name>The Apache License, Version 2.0</name>
|
||||
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
|
||||
</license>
|
||||
</licenses>
|
||||
|
||||
<developers>
|
||||
<developer>
|
||||
<name>Holger Hagen</name>
|
||||
<email>holger.hagen@novatec-gmbh.de</email>
|
||||
<organization>NovaTec Consulting GmbH</organization>
|
||||
<organizationUrl>https://www.novatec-gmbh.de</organizationUrl>
|
||||
</developer>
|
||||
</developers>
|
||||
<developers>
|
||||
<developer>
|
||||
<name>Holger Hagen</name>
|
||||
<email>holger.hagen@novatec-gmbh.de</email>
|
||||
<organization>NovaTec Consulting GmbH</organization>
|
||||
<organizationUrl>https://www.novatec-gmbh.de</organizationUrl>
|
||||
</developer>
|
||||
</developers>
|
||||
|
||||
<scm>
|
||||
<connection>scm:git:git://github.com/taskana/taskana.git</connection>
|
||||
<developerConnection>scm:git:ssh://github.com:taskana/taskana.git</developerConnection>
|
||||
<url>http://github.com/taskana/taskana/tree/master</url>
|
||||
</scm>
|
||||
<scm>
|
||||
<connection>scm:git:git://github.com/taskana/taskana.git</connection>
|
||||
<developerConnection>scm:git:ssh://github.com:taskana/taskana.git</developerConnection>
|
||||
<url>http://github.com/taskana/taskana/tree/master</url>
|
||||
</scm>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
||||
<maven.compiler.source>1.8</maven.compiler.source>
|
||||
<maven.compiler.target>1.8</maven.compiler.target>
|
||||
<java.version>1.8</java.version>
|
||||
<spring.version>5.0.5.RELEASE</spring.version>
|
||||
</properties>
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
||||
<maven.compiler.source>1.8</maven.compiler.source>
|
||||
<maven.compiler.target>1.8</maven.compiler.target>
|
||||
<java.version>1.8</java.version>
|
||||
<spring.version>5.0.5.RELEASE</spring.version>
|
||||
<spring.ldap.version>2.3.2.RELEASE</spring.ldap.version>
|
||||
</properties>
|
||||
|
||||
<profiles>
|
||||
<profile>
|
||||
<id>snapshot</id>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-gpg-plugin</artifactId>
|
||||
<version>1.5</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>sign-artifacts</id>
|
||||
<phase>verify</phase>
|
||||
<goals>
|
||||
<goal>sign</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.sonatype.plugins</groupId>
|
||||
<artifactId>nexus-staging-maven-plugin</artifactId>
|
||||
<version>1.6.8</version>
|
||||
<extensions>true</extensions>
|
||||
<configuration>
|
||||
<serverId>ossrh</serverId>
|
||||
<nexusUrl>https://oss.sonatype.org/</nexusUrl>
|
||||
<autoReleaseAfterClose>false</autoReleaseAfterClose>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
<distributionManagement>
|
||||
<snapshotRepository>
|
||||
<id>ossrh</id>
|
||||
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
|
||||
</snapshotRepository>
|
||||
</distributionManagement>
|
||||
</profile>
|
||||
<profile>
|
||||
<id>release</id>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-gpg-plugin</artifactId>
|
||||
<version>1.5</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>sign-artifacts</id>
|
||||
<phase>verify</phase>
|
||||
<goals>
|
||||
<goal>sign</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.sonatype.plugins</groupId>
|
||||
<artifactId>nexus-staging-maven-plugin</artifactId>
|
||||
<version>1.6.8</version>
|
||||
<extensions>true</extensions>
|
||||
<configuration>
|
||||
<serverId>ossrh</serverId>
|
||||
<nexusUrl>https://oss.sonatype.org/</nexusUrl>
|
||||
<autoReleaseAfterClose>false</autoReleaseAfterClose>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
<distributionManagement>
|
||||
<repository>
|
||||
<id>ossrh</id>
|
||||
<url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
|
||||
</repository>
|
||||
</distributionManagement>
|
||||
</profile>
|
||||
</profiles>
|
||||
<profiles>
|
||||
<profile>
|
||||
<id>snapshot</id>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-gpg-plugin</artifactId>
|
||||
<version>1.5</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>sign-artifacts</id>
|
||||
<phase>verify</phase>
|
||||
<goals>
|
||||
<goal>sign</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.sonatype.plugins</groupId>
|
||||
<artifactId>nexus-staging-maven-plugin</artifactId>
|
||||
<version>1.6.8</version>
|
||||
<extensions>true</extensions>
|
||||
<configuration>
|
||||
<serverId>ossrh</serverId>
|
||||
<nexusUrl>https://oss.sonatype.org/</nexusUrl>
|
||||
<autoReleaseAfterClose>false</autoReleaseAfterClose>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
<distributionManagement>
|
||||
<snapshotRepository>
|
||||
<id>ossrh</id>
|
||||
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
|
||||
</snapshotRepository>
|
||||
</distributionManagement>
|
||||
</profile>
|
||||
<profile>
|
||||
<id>release</id>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-gpg-plugin</artifactId>
|
||||
<version>1.5</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>sign-artifacts</id>
|
||||
<phase>verify</phase>
|
||||
<goals>
|
||||
<goal>sign</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.sonatype.plugins</groupId>
|
||||
<artifactId>nexus-staging-maven-plugin</artifactId>
|
||||
<version>1.6.8</version>
|
||||
<extensions>true</extensions>
|
||||
<configuration>
|
||||
<serverId>ossrh</serverId>
|
||||
<nexusUrl>https://oss.sonatype.org/</nexusUrl>
|
||||
<autoReleaseAfterClose>false</autoReleaseAfterClose>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
<distributionManagement>
|
||||
<repository>
|
||||
<id>ossrh</id>
|
||||
<url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
|
||||
</repository>
|
||||
</distributionManagement>
|
||||
</profile>
|
||||
</profiles>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-web</artifactId>
|
||||
<version>${spring.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-beans</artifactId>
|
||||
<version>${spring.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-jdbc</artifactId>
|
||||
<version>${spring.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.hateoas</groupId>
|
||||
<artifactId>spring-hateoas</artifactId>
|
||||
<version>0.24.0.RELEASE</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>javax.servlet</groupId>
|
||||
<artifactId>javax.servlet-api</artifactId>
|
||||
<version>4.0.1</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>javax.validation</groupId>
|
||||
<artifactId>validation-api</artifactId>
|
||||
<version>2.0.1.Final</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-databind</artifactId>
|
||||
<version>2.9.5</version>
|
||||
</dependency>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-web</artifactId>
|
||||
<version>${spring.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-beans</artifactId>
|
||||
<version>${spring.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-jdbc</artifactId>
|
||||
<version>${spring.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.hateoas</groupId>
|
||||
<artifactId>spring-hateoas</artifactId>
|
||||
<version>0.24.0.RELEASE</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.ldap</groupId>
|
||||
<artifactId>spring-ldap-core</artifactId>
|
||||
<version>${spring.ldap.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>javax.servlet</groupId>
|
||||
<artifactId>javax.servlet-api</artifactId>
|
||||
<version>4.0.1</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>javax.validation</groupId>
|
||||
<artifactId>validation-api</artifactId>
|
||||
<version>2.0.1.Final</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-databind</artifactId>
|
||||
<version>2.9.5</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>pro.taskana</groupId>
|
||||
<artifactId>taskana-spring</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>pro.taskana</groupId>
|
||||
<artifactId>taskana-spring</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- TEST -->
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-test</artifactId>
|
||||
<version>5.0.5.RELEASE</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.plugin</groupId>
|
||||
<artifactId>spring-plugin-core</artifactId>
|
||||
<version>1.2.0.RELEASE</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<version>4.12</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.slf4j</groupId>
|
||||
<artifactId>slf4j-simple</artifactId>
|
||||
<version>1.6.1</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.h2database</groupId>
|
||||
<artifactId>h2</artifactId>
|
||||
<version>1.4.197</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<!-- TEST -->
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-test</artifactId>
|
||||
<version>5.0.5.RELEASE</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.plugin</groupId>
|
||||
<artifactId>spring-plugin-core</artifactId>
|
||||
<version>1.2.0.RELEASE</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<version>4.12</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.slf4j</groupId>
|
||||
<artifactId>slf4j-simple</artifactId>
|
||||
<version>1.6.1</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.h2database</groupId>
|
||||
<artifactId>h2</artifactId>
|
||||
<version>1.4.197</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<!-- spring ldap test -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.ldap</groupId>
|
||||
<artifactId>spring-ldap-test</artifactId>
|
||||
<version>${spring.ldap.version}</version>
|
||||
<scope>test</scope>
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
<artifactId>commons-logging</artifactId>
|
||||
<groupId>commons-logging</groupId>
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-checkstyle-plugin</artifactId>
|
||||
<version>2.17</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>validate</id>
|
||||
<phase>validate</phase>
|
||||
<configuration>
|
||||
<configLocation>../../qa/checkstyle/checkstyle.xml</configLocation>
|
||||
<encoding>UTF-8</encoding>
|
||||
<consoleOutput>true</consoleOutput>
|
||||
<failsOnError>true</failsOnError>
|
||||
<failOnViolation>true</failOnViolation>
|
||||
<includeTestSourceDirectory>true</includeTestSourceDirectory>
|
||||
</configuration>
|
||||
<goals>
|
||||
<goal>check</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>3.5.1</version>
|
||||
<configuration>
|
||||
<showWarnings>true</showWarnings>
|
||||
<compilerArgs>
|
||||
<arg>-Xlint:all</arg>
|
||||
</compilerArgs>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-source-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>attach-sources</id>
|
||||
<goals>
|
||||
<goal>jar-no-fork</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-javadoc-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>attach-javadocs</id>
|
||||
<goals>
|
||||
<goal>jar</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-checkstyle-plugin</artifactId>
|
||||
<version>2.17</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>validate</id>
|
||||
<phase>validate</phase>
|
||||
<configuration>
|
||||
<configLocation>../../qa/checkstyle/checkstyle.xml</configLocation>
|
||||
<encoding>UTF-8</encoding>
|
||||
<consoleOutput>true</consoleOutput>
|
||||
<failsOnError>true</failsOnError>
|
||||
<failOnViolation>true</failOnViolation>
|
||||
<includeTestSourceDirectory>true</includeTestSourceDirectory>
|
||||
</configuration>
|
||||
<goals>
|
||||
<goal>check</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>3.5.1</version>
|
||||
<configuration>
|
||||
<showWarnings>true</showWarnings>
|
||||
<compilerArgs>
|
||||
<arg>-Xlint:all</arg>
|
||||
</compilerArgs>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-source-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>attach-sources</id>
|
||||
<goals>
|
||||
<goal>jar-no-fork</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-javadoc-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>attach-javadocs</id>
|
||||
<goals>
|
||||
<goal>jar</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
||||
|
|
|
@ -0,0 +1,40 @@
|
|||
package pro.taskana.ldap;
|
||||
|
||||
/**
|
||||
* Utility class to hold access ids.
|
||||
*
|
||||
* @author bbr
|
||||
*/
|
||||
public class AccessId {
|
||||
|
||||
private String accessId;
|
||||
private String name;
|
||||
|
||||
public String getAccessId() {
|
||||
return accessId;
|
||||
}
|
||||
|
||||
public void setAccessId(String accessId) {
|
||||
this.accessId = accessId;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder builder = new StringBuilder();
|
||||
builder.append("AccessId [accessId=");
|
||||
builder.append(accessId);
|
||||
builder.append(", name=");
|
||||
builder.append(name);
|
||||
builder.append("]");
|
||||
return builder.toString();
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
package pro.taskana.ldap;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import pro.taskana.rest.resource.AccessIdResource;
|
||||
|
||||
/**
|
||||
* This interface is used for caching Ldap data.
|
||||
*
|
||||
* @author bbr
|
||||
*/
|
||||
public interface LdapCache {
|
||||
|
||||
/**
|
||||
* find access ids for users and groups that match specified search criteria.
|
||||
*
|
||||
* @param searchFor
|
||||
* the search string. The search is performed over names and ids of users and groups.
|
||||
* @return a List of access ids for users and group where the name or id contains the search string.
|
||||
*/
|
||||
List<AccessIdResource> findMatchingAccessId(String searchFor);
|
||||
}
|
|
@ -0,0 +1,258 @@
|
|||
package pro.taskana.ldap;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import javax.naming.directory.SearchControls;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.core.env.Environment;
|
||||
import org.springframework.ldap.core.DirContextOperations;
|
||||
import org.springframework.ldap.core.LdapTemplate;
|
||||
import org.springframework.ldap.core.support.AbstractContextMapper;
|
||||
import org.springframework.ldap.filter.AndFilter;
|
||||
import org.springframework.ldap.filter.EqualsFilter;
|
||||
import org.springframework.ldap.filter.OrFilter;
|
||||
import org.springframework.ldap.filter.WhitespaceWildcardsFilter;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import pro.taskana.exceptions.SystemException;
|
||||
import pro.taskana.impl.util.LoggerUtils;
|
||||
import pro.taskana.rest.resource.AccessIdResource;
|
||||
|
||||
/**
|
||||
* Class for Ldap access.
|
||||
*
|
||||
* @author bbr
|
||||
*/
|
||||
@Component
|
||||
public class LdapClient {
|
||||
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(LdapClient.class);
|
||||
private boolean active = false;
|
||||
|
||||
@Autowired
|
||||
private Environment env;
|
||||
|
||||
@Autowired
|
||||
private LdapTemplate ldapTemplate;
|
||||
|
||||
private String userSearchBase;
|
||||
private String userSearchFilterName;
|
||||
private String userSearchFilterValue;
|
||||
private String userFirstnameAttribute;
|
||||
private String userLastnameAttribute;
|
||||
private String groupSearchBase;
|
||||
private String groupSearchFilterName;
|
||||
private String groupSearchFilterValue;
|
||||
private String groupNameAttribute;
|
||||
|
||||
private static final String CN = "cn";
|
||||
private String message;
|
||||
|
||||
@PostConstruct
|
||||
private void init() {
|
||||
|
||||
if (useLdap()) {
|
||||
userSearchBase = getUserSearchBase();
|
||||
userSearchFilterName = getUserSearchFilterName();
|
||||
userSearchFilterValue = getUserSearchFilterValue();
|
||||
userFirstnameAttribute = getUserFirstnameAttribute();
|
||||
userLastnameAttribute = getUserLastnameAttribute();
|
||||
groupSearchBase = getGroupSearchBase();
|
||||
groupSearchFilterName = getGroupSearchFilterName();
|
||||
groupSearchFilterValue = getGroupSearchFilterValue();
|
||||
groupNameAttribute = getGroupNameAttribute();
|
||||
|
||||
message = "taskana.ldap.useLdap is set to true, but";
|
||||
if (userSearchBase == null) {
|
||||
message += " taskana.ldap.userSearchBase is not configured.";
|
||||
}
|
||||
if (userSearchFilterName == null) {
|
||||
message += " taskana.ldap.userSearchFilterName is not configured.";
|
||||
}
|
||||
if (userSearchFilterValue == null) {
|
||||
message += " taskana.ldap.userSearchFilterValue is not configured.";
|
||||
}
|
||||
if (userFirstnameAttribute == null) {
|
||||
message += " taskana.ldap.userFirstnameAttribute is not configured.";
|
||||
}
|
||||
if (userLastnameAttribute == null) {
|
||||
message += " taskana.ldap.userLastnameAttribute is not configured.";
|
||||
}
|
||||
if (groupSearchBase == null) {
|
||||
message += " taskana.ldap.groupSearchBase is not configured.";
|
||||
}
|
||||
if (groupSearchFilterName == null) {
|
||||
message += " taskana.ldap.groupSearchFilterName is not configured.";
|
||||
}
|
||||
if (groupSearchFilterValue == null) {
|
||||
message += " taskana.ldap.groupSearchFilterValue is not configured.";
|
||||
}
|
||||
if (groupNameAttribute == null) {
|
||||
message += " taskana.ldap.groupNameAttribute is not configured.";
|
||||
}
|
||||
if (!message.equals("taskana.ldap.useLdap is set to true, but")) {
|
||||
LOGGER.error("Ldap configuration error detected: {}", message);
|
||||
throw new SystemException(message);
|
||||
}
|
||||
active = true;
|
||||
}
|
||||
}
|
||||
|
||||
public List<AccessIdResource> searchUsersAndGroups(final String name) {
|
||||
LOGGER.debug("entry to searchUsersAndGroups(name = {})", name);
|
||||
if (!active) {
|
||||
LOGGER.error("LdapClient was called but is not active due to missing configuration: " + message);
|
||||
throw new SystemException(
|
||||
"LdapClient was called but is not active due to missing configuration: " + message);
|
||||
}
|
||||
List<AccessIdResource> users = searchUsersByName(name);
|
||||
users.addAll(searchGroupsByName(name));
|
||||
LOGGER.debug("exit from searchUsersAndGroups(name = {}). Found {} users and groups.", name, users.size());
|
||||
return users;
|
||||
}
|
||||
|
||||
public List<AccessIdResource> searchUsersByName(final String name) {
|
||||
LOGGER.debug("entry to searchUsersByName(name = {}).", name);
|
||||
if (!active) {
|
||||
LOGGER.error("LdapClient was called but is not active due to missing configuration: " + message);
|
||||
throw new SystemException(
|
||||
"LdapClient was called but is not active due to missing configuration: " + message);
|
||||
}
|
||||
final AndFilter andFilter = new AndFilter();
|
||||
andFilter.and(new EqualsFilter(getUserSearchFilterName(), getUserSearchFilterValue()));
|
||||
final OrFilter orFilter = new OrFilter();
|
||||
|
||||
orFilter.or(new WhitespaceWildcardsFilter(CN, name));
|
||||
orFilter.or(new WhitespaceWildcardsFilter(getUserFirstnameAttribute(), name));
|
||||
orFilter.or(new WhitespaceWildcardsFilter(getUserLastnameAttribute(), name));
|
||||
andFilter.and(orFilter);
|
||||
|
||||
String[] userAttributesToReturn = {getUserFirstnameAttribute(), getUserLastnameAttribute(), CN};
|
||||
|
||||
try {
|
||||
final List<AccessIdResource> accessIds = ldapTemplate.search(getUserSearchBase(), andFilter.encode(),
|
||||
SearchControls.SUBTREE_SCOPE, userAttributesToReturn, new UserContextMapper());
|
||||
LOGGER.debug("exit from searchUsersByName. Retrieved the following users: {}.",
|
||||
LoggerUtils.listToString(accessIds));
|
||||
return accessIds;
|
||||
} catch (Exception e) {
|
||||
LOGGER.error("caught Exception {} ", e.getMessage());
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
public List<AccessIdResource> searchGroupsByName(final String name) {
|
||||
LOGGER.debug("entry to searchGroupsByName(name = {}).", name);
|
||||
if (!active) {
|
||||
LOGGER.error("LdapClient was called but is not active due to missing configuration: " + message);
|
||||
throw new SystemException(
|
||||
"LdapClient was called but is not active due to missing configuration: " + message);
|
||||
}
|
||||
final AndFilter andFilter = new AndFilter();
|
||||
andFilter.and(new EqualsFilter(getGroupSearchFilterName(), getGroupSearchFilterValue()));
|
||||
final OrFilter orFilter = new OrFilter();
|
||||
orFilter.or(new WhitespaceWildcardsFilter(getGroupNameAttribute(), name));
|
||||
if (!CN.equals(groupNameAttribute)) {
|
||||
orFilter.or(new WhitespaceWildcardsFilter(CN, name));
|
||||
}
|
||||
andFilter.and(orFilter);
|
||||
|
||||
String[] groupAttributesToReturn;
|
||||
if (CN.equals(groupNameAttribute)) {
|
||||
groupAttributesToReturn = new String[] {CN};
|
||||
} else {
|
||||
groupAttributesToReturn = new String[] {getGroupNameAttribute(), CN};
|
||||
}
|
||||
|
||||
try {
|
||||
final List<AccessIdResource> accessIds = ldapTemplate.search(getGroupSearchBase(), andFilter.encode(),
|
||||
SearchControls.SUBTREE_SCOPE, groupAttributesToReturn, new GroupContextMapper());
|
||||
LOGGER.debug("Exit from searchGroupsByName. Retrieved the following groups: {}",
|
||||
LoggerUtils.listToString(accessIds));
|
||||
return accessIds;
|
||||
} catch (Exception e) {
|
||||
LOGGER.error("caught Exception {} ", e.getMessage());
|
||||
throw e;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public boolean useLdap() {
|
||||
String useLdap = env.getProperty("taskana.ldap.useLdap");
|
||||
if (useLdap == null || useLdap.isEmpty()) {
|
||||
return false;
|
||||
} else {
|
||||
return Boolean.parseBoolean(useLdap);
|
||||
}
|
||||
}
|
||||
|
||||
public String getUserSearchBase() {
|
||||
return env.getProperty("taskana.ldap.userSearchBase");
|
||||
}
|
||||
|
||||
public String getUserSearchFilterName() {
|
||||
return env.getProperty("taskana.ldap.userSearchFilterName");
|
||||
}
|
||||
|
||||
public String getUserSearchFilterValue() {
|
||||
return env.getProperty("taskana.ldap.userSearchFilterValue");
|
||||
}
|
||||
|
||||
public String getUserFirstnameAttribute() {
|
||||
return env.getProperty("taskana.ldap.userFirstnameAttribute");
|
||||
}
|
||||
|
||||
public String getUserLastnameAttribute() {
|
||||
return env.getProperty("taskana.ldap.userLastnameAttribute");
|
||||
}
|
||||
|
||||
public String getGroupSearchBase() {
|
||||
return env.getProperty("taskana.ldap.groupSearchBase");
|
||||
}
|
||||
|
||||
public String getGroupSearchFilterName() {
|
||||
return env.getProperty("taskana.ldap.groupSearchFilterName");
|
||||
}
|
||||
|
||||
public String getGroupSearchFilterValue() {
|
||||
return env.getProperty("taskana.ldap.groupSearchFilterValue");
|
||||
}
|
||||
|
||||
public String getGroupNameAttribute() {
|
||||
return env.getProperty("taskana.ldap.groupNameAttribute");
|
||||
}
|
||||
|
||||
/**
|
||||
* Context Mapper for user entries.
|
||||
*/
|
||||
private class UserContextMapper extends AbstractContextMapper<AccessIdResource> {
|
||||
|
||||
@Override
|
||||
public AccessIdResource doMapFromContext(final DirContextOperations context) {
|
||||
final AccessIdResource accessId = new AccessIdResource();
|
||||
accessId.setAccessId(context.getNameInNamespace()); // fully qualified dn
|
||||
String firstName = context.getStringAttribute(getUserFirstnameAttribute());
|
||||
String lastName = context.getStringAttribute(getUserLastnameAttribute());
|
||||
accessId.setName(lastName + ", " + firstName);
|
||||
return accessId;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Context Mapper for user entries.
|
||||
*/
|
||||
private class GroupContextMapper extends AbstractContextMapper<AccessIdResource> {
|
||||
|
||||
@Override
|
||||
public AccessIdResource doMapFromContext(final DirContextOperations context) {
|
||||
final AccessIdResource accessId = new AccessIdResource();
|
||||
accessId.setAccessId(context.getNameInNamespace()); // fully qualified dn
|
||||
accessId.setName(context.getStringAttribute(getGroupNameAttribute()));
|
||||
return accessId;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,51 @@
|
|||
package pro.taskana.rest;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.hateoas.config.EnableHypermediaSupport;
|
||||
import org.springframework.hateoas.config.EnableHypermediaSupport.HypermediaType;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import pro.taskana.ldap.LdapCache;
|
||||
import pro.taskana.ldap.LdapClient;
|
||||
import pro.taskana.rest.resource.AccessIdResource;
|
||||
|
||||
/**
|
||||
* Controller for access id validation.
|
||||
*
|
||||
* @author bbr
|
||||
*/
|
||||
@RestController
|
||||
@EnableHypermediaSupport(type = HypermediaType.HAL)
|
||||
@RequestMapping(path = "/v1/access-ids", produces = "application/hal+json")
|
||||
public class AccessIdController {
|
||||
|
||||
@Autowired
|
||||
LdapClient ldapClient;
|
||||
|
||||
private static LdapCache ldapCache;
|
||||
|
||||
@GetMapping
|
||||
public ResponseEntity<List<AccessIdResource>> validateAccessIds(
|
||||
@RequestParam(required = false) String searchFor) {
|
||||
if (ldapClient.useLdap()) {
|
||||
return new ResponseEntity<>(ldapClient.searchUsersAndGroups(searchFor), HttpStatus.OK);
|
||||
} else if (ldapCache != null) {
|
||||
return new ResponseEntity<>(ldapCache.findMatchingAccessId(searchFor), HttpStatus.OK);
|
||||
} else {
|
||||
return new ResponseEntity<>(new ArrayList<>(), HttpStatus.NOT_FOUND);
|
||||
}
|
||||
}
|
||||
|
||||
public static void setLdapCache(LdapCache cache) {
|
||||
ldapCache = cache;
|
||||
}
|
||||
|
||||
}
|
|
@ -1,317 +0,0 @@
|
|||
package pro.taskana.rest;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.springframework.hateoas.config.EnableHypermediaSupport;
|
||||
import org.springframework.hateoas.config.EnableHypermediaSupport.HypermediaType;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import pro.taskana.rest.resource.AccessIdValidationResource;
|
||||
|
||||
/**
|
||||
* Controller for access id validation.
|
||||
*
|
||||
* @author bbr
|
||||
*/
|
||||
@RestController
|
||||
@EnableHypermediaSupport(type = HypermediaType.HAL)
|
||||
@RequestMapping(path = "/v1/validate-access-id", produces = "application/hal+json")
|
||||
public class AccessIdValidationController {
|
||||
|
||||
@GetMapping
|
||||
public ResponseEntity<List<AccessIdValidationResource>> validateAccessIds(
|
||||
@RequestParam(required = false) String search) {
|
||||
|
||||
return new ResponseEntity<>(findMatchingAccessIdValidationResources(search), HttpStatus.OK);
|
||||
}
|
||||
|
||||
private List<AccessIdValidationResource> findMatchingAccessIdValidationResources(String searchFor) {
|
||||
List<AccessIdValidationResource> result = accessIds.stream()
|
||||
.filter(t -> (t.getName().toLowerCase().contains(searchFor.toLowerCase())
|
||||
|| t.getAccessId().toLowerCase().contains(searchFor.toLowerCase())))
|
||||
.collect(Collectors.toList());
|
||||
return result;
|
||||
}
|
||||
|
||||
private static List<AccessIdValidationResource> accessIds = new ArrayList<>(Arrays.asList(
|
||||
new AccessIdValidationResource("Sirup, Aaron", "user001"),
|
||||
new AccessIdValidationResource("Kahn, Ada", "user002"),
|
||||
new AccessIdValidationResource("Lass, Ada", "user003"),
|
||||
new AccessIdValidationResource("Tion, Addi", "user004"),
|
||||
new AccessIdValidationResource("Lette, Adi", "user005"),
|
||||
new AccessIdValidationResource("Native, Alter", "user006"),
|
||||
new AccessIdValidationResource("Herum, Albert", "user007"),
|
||||
new AccessIdValidationResource("Bert, Ali", "user008"),
|
||||
new AccessIdValidationResource("Mente, Ali", "user009"),
|
||||
new AccessIdValidationResource("Mater, Alma", "user010"),
|
||||
new AccessIdValidationResource("Nach, Alma", "user011"),
|
||||
new AccessIdValidationResource("Gehzauch, Anders", "user012"),
|
||||
new AccessIdValidationResource("Theke, Andi", "user013"),
|
||||
new AccessIdValidationResource("Kreuz, Andreas", "user014"),
|
||||
new AccessIdValidationResource("Kette, Anka", "user015"),
|
||||
new AccessIdValidationResource("Tiefsee, Anka", "user016"),
|
||||
new AccessIdValidationResource("Fielmalz, Anke", "user017"),
|
||||
new AccessIdValidationResource("Fassen, Ann", "user018"),
|
||||
new AccessIdValidationResource("Probe, Ann", "user019"),
|
||||
new AccessIdValidationResource("Bolika, Anna", "user020"),
|
||||
new AccessIdValidationResource("Ecke, Anna", "user021"),
|
||||
new AccessIdValidationResource("Hosi, Anna", "user022"),
|
||||
new AccessIdValidationResource("Kronis-Tisch, Anna", "user023"),
|
||||
new AccessIdValidationResource("Logie, Anna", "user024"),
|
||||
new AccessIdValidationResource("Luehse, Anna", "user025"),
|
||||
new AccessIdValidationResource("Nass, Anna", "user026"),
|
||||
new AccessIdValidationResource("Thalb, Anna", "user027"),
|
||||
new AccessIdValidationResource("Tomie, Anna", "user028"),
|
||||
new AccessIdValidationResource("Donnich, Anne", "user029"),
|
||||
new AccessIdValidationResource("Kaffek, Anne", "user030"),
|
||||
new AccessIdValidationResource("Thek, Anne", "user031"),
|
||||
new AccessIdValidationResource("Matoer, Anni", "user032"),
|
||||
new AccessIdValidationResource("Ragentor, Ansgar", "user033"),
|
||||
new AccessIdValidationResource("Stoteles, Ari", "user034"),
|
||||
new AccessIdValidationResource("Thmetik, Ari", "user035"),
|
||||
new AccessIdValidationResource("Nuehm, Arno", "user036"),
|
||||
new AccessIdValidationResource("Schocke, Artie", "user037"),
|
||||
new AccessIdValidationResource("Stoppel, Bart", "user038"),
|
||||
new AccessIdValidationResource("Beitung, Bea", "user039"),
|
||||
new AccessIdValidationResource("Ildich, Bea", "user040"),
|
||||
new AccessIdValidationResource("Vista, Bella", "user041"),
|
||||
new AccessIdValidationResource("Utzer, Ben", "user042"),
|
||||
new AccessIdValidationResource("Zien, Ben", "user043"),
|
||||
new AccessIdValidationResource("Stein, Bernd", "user044"),
|
||||
new AccessIdValidationResource("Deramen, Bill", "user045"),
|
||||
new AccessIdValidationResource("Honig, Bine", "user046"),
|
||||
new AccessIdValidationResource("Densatz, Bo", "user047"),
|
||||
new AccessIdValidationResource("Densee, Bo", "user048"),
|
||||
new AccessIdValidationResource("Lerwagen, Bo", "user049"),
|
||||
new AccessIdValidationResource("Tail, Bob", "user050"),
|
||||
new AccessIdValidationResource("Ketta, Bruce", "user051"),
|
||||
new AccessIdValidationResource("Terrie, Bud", "user052"),
|
||||
new AccessIdValidationResource("Biener-Haken, Cara", "user053"),
|
||||
new AccessIdValidationResource("Ass, Caro", "user054"),
|
||||
new AccessIdValidationResource("Kaffee, Caro", "user055"),
|
||||
new AccessIdValidationResource("Linger, Caro", "user056"),
|
||||
new AccessIdValidationResource("tenSaft, Caro", "user057"),
|
||||
new AccessIdValidationResource("Antheme, Chris", "user058"),
|
||||
new AccessIdValidationResource("Baum, Chris", "user059"),
|
||||
new AccessIdValidationResource("Tall, Chris", "user060"),
|
||||
new AccessIdValidationResource("Reiniger, Claas", "user061"),
|
||||
new AccessIdValidationResource("Grube, Claire", "user062"),
|
||||
new AccessIdValidationResource("Fall, Clara", "user063"),
|
||||
new AccessIdValidationResource("Korn, Clara", "user064"),
|
||||
new AccessIdValidationResource("Lenriff, Cora", "user065"),
|
||||
new AccessIdValidationResource("Schiert, Cora", "user066"),
|
||||
new AccessIdValidationResource("Hose, Cord", "user067"),
|
||||
new AccessIdValidationResource("Onbleu, Cord", "user068"),
|
||||
new AccessIdValidationResource("Umkleide, Damon", "user069"),
|
||||
new AccessIdValidationResource("Affier, Dean", "user070"),
|
||||
new AccessIdValidationResource("Orm, Dean", "user071"),
|
||||
new AccessIdValidationResource("Platz, Dennis", "user072"),
|
||||
new AccessIdValidationResource("Milch, Dick", "user073"),
|
||||
new AccessIdValidationResource("Mow, Dina", "user074"),
|
||||
new AccessIdValidationResource("Keil, Donna", "user075"),
|
||||
new AccessIdValidationResource("Littchen, Donna", "user076"),
|
||||
new AccessIdValidationResource("Wetter, Donna", "user077"),
|
||||
new AccessIdValidationResource("Was, Ed", "user078"),
|
||||
new AccessIdValidationResource("Khar, Ede", "user079"),
|
||||
new AccessIdValidationResource("Nut, Ella", "user080"),
|
||||
new AccessIdValidationResource("Stisch, Ella", "user081"),
|
||||
new AccessIdValidationResource("Diel, Emma", "user082"),
|
||||
new AccessIdValidationResource("Herdamit, Emma", "user083"),
|
||||
new AccessIdValidationResource("Mitter-Uhe, Emma", "user084"),
|
||||
new AccessIdValidationResource("Tatt, Erich", "user085"),
|
||||
new AccessIdValidationResource("Drigend, Ernie", "user086"),
|
||||
new AccessIdValidationResource("Poly, Esther", "user087"),
|
||||
new AccessIdValidationResource("Trautz, Eugen", "user088"),
|
||||
new AccessIdValidationResource("Quiert, Eva", "user089"),
|
||||
new AccessIdValidationResource("Inurlaub, Fatma", "user090"),
|
||||
new AccessIdValidationResource("Land, Finn", "user091"),
|
||||
new AccessIdValidationResource("Sternis, Finn", "user092"),
|
||||
new AccessIdValidationResource("Furt, Frank", "user093"),
|
||||
new AccessIdValidationResource("Reich, Frank", "user094"),
|
||||
new AccessIdValidationResource("Iskaner, Franz", "user095"),
|
||||
new AccessIdValidationResource("Nerr, Franziska", "user096"),
|
||||
new AccessIdValidationResource("Zafen, Friedrich", "user097"),
|
||||
new AccessIdValidationResource("Pomm, Fritz", "user098"),
|
||||
new AccessIdValidationResource("deWegs, Gera", "user099"),
|
||||
new AccessIdValidationResource("Staebe, Gitta", "user100"),
|
||||
new AccessIdValidationResource("Zend, Glenn", "user101"),
|
||||
new AccessIdValidationResource("Fisch, Grete", "user102"),
|
||||
new AccessIdValidationResource("Zucker, Gus", "user103"),
|
||||
new AccessIdValidationResource("Muhn, Hanni", "user104"),
|
||||
new AccessIdValidationResource("Fermesse, Hanno", "user105"),
|
||||
new AccessIdValidationResource("Aplast, Hans", "user106"),
|
||||
new AccessIdValidationResource("Eart, Hans", "user107"),
|
||||
new AccessIdValidationResource("Back, Hardy", "user108"),
|
||||
new AccessIdValidationResource("Beau, Harry", "user110"),
|
||||
new AccessIdValidationResource("Kraut, Heide", "user111"),
|
||||
new AccessIdValidationResource("Witzka, Heide", "user112"),
|
||||
new AccessIdValidationResource("Buchen, Hein", "user113"),
|
||||
new AccessIdValidationResource("Lichkeit, Hein", "user114"),
|
||||
new AccessIdValidationResource("Suchung, Hein", "user115"),
|
||||
new AccessIdValidationResource("Ellmann, Heinz", "user116"),
|
||||
new AccessIdValidationResource("Ketchup, Heinz", "user117"),
|
||||
new AccessIdValidationResource("Zeim, Hilde", "user118"),
|
||||
new AccessIdValidationResource("Bilien, Immo", "user119"),
|
||||
new AccessIdValidationResource("Her, Inge", "user120"),
|
||||
new AccessIdValidationResource("Wahrsam, Inge", "user121"),
|
||||
new AccessIdValidationResource("Flamm, Ingo", "user122"),
|
||||
new AccessIdValidationResource("Enzien, Ingrid", "user123"),
|
||||
new AccessIdValidationResource("Rohsch, Inken", "user124"),
|
||||
new AccessIdValidationResource("Ihr, Insa", "user125"),
|
||||
new AccessIdValidationResource("Nerda, Iska", "user126"),
|
||||
new AccessIdValidationResource("Eitz, Jens", "user127"),
|
||||
new AccessIdValidationResource("Nastik, Jim", "user128"),
|
||||
new AccessIdValidationResource("Gurt, Jo", "user129"),
|
||||
new AccessIdValidationResource("Kurrth, Jo", "user130"),
|
||||
new AccessIdValidationResource("Kolade, Joe", "user131"),
|
||||
new AccessIdValidationResource("Iter, Johann", "user132"),
|
||||
new AccessIdValidationResource("Tick, Joyce", "user133"),
|
||||
new AccessIdValidationResource("Case, Justin", "user134"),
|
||||
new AccessIdValidationResource("Time, Justin", "user135"),
|
||||
new AccessIdValidationResource("Komp, Jutta", "user136"),
|
||||
new AccessIdValidationResource("Mauer, Kai", "user137"),
|
||||
new AccessIdValidationResource("Pirinja, Kai", "user138"),
|
||||
new AccessIdValidationResource("Serpfalz, Kai", "user139"),
|
||||
new AccessIdValidationResource("Auer, Karl", "user140"),
|
||||
new AccessIdValidationResource("Ielauge, Karl", "user141"),
|
||||
new AccessIdValidationResource("Ifornjen, Karl", "user142"),
|
||||
new AccessIdValidationResource("Radi, Karl", "user143"),
|
||||
new AccessIdValidationResource("Verti, Karl", "user144"),
|
||||
new AccessIdValidationResource("Sery, Karo", "user145"),
|
||||
new AccessIdValidationResource("Lisator, Katha", "user146"),
|
||||
new AccessIdValidationResource("Flo, Kati", "user147"),
|
||||
new AccessIdValidationResource("Schenn, Knut", "user148"),
|
||||
new AccessIdValidationResource("Achse, Kurt", "user149"),
|
||||
new AccessIdValidationResource("Zepause, Kurt", "user150"),
|
||||
new AccessIdValidationResource("Zerr, Kurt", "user151"),
|
||||
new AccessIdValidationResource("Reden, Lasse", "user152"),
|
||||
new AccessIdValidationResource("Metten, Lee", "user153"),
|
||||
new AccessIdValidationResource("Arm, Lene", "user154"),
|
||||
new AccessIdValidationResource("Thur, Linnea", "user155"),
|
||||
new AccessIdValidationResource("Bonn, Lisa", "user156"),
|
||||
new AccessIdValidationResource("Sembourg, Luc", "user157"),
|
||||
new AccessIdValidationResource("Rung, Lucky", "user158"),
|
||||
new AccessIdValidationResource("Zafen, Ludwig", "user159"),
|
||||
new AccessIdValidationResource("Hauden, Lukas", "user160"),
|
||||
new AccessIdValidationResource("Hose, Lutz", "user161"),
|
||||
new AccessIdValidationResource("Tablette, Lutz", "user162"),
|
||||
new AccessIdValidationResource("Fehr, Luzie", "user163"),
|
||||
new AccessIdValidationResource("Nalyse, Magda", "user164"),
|
||||
new AccessIdValidationResource("Ehfer, Maik", "user165"),
|
||||
new AccessIdValidationResource("Sehr, Malte", "user166"),
|
||||
new AccessIdValidationResource("Thon, Mara", "user167"),
|
||||
new AccessIdValidationResource("Quark, Marga", "user168"),
|
||||
new AccessIdValidationResource("Nade, Marie", "user169"),
|
||||
new AccessIdValidationResource("Niert, Marie", "user170"),
|
||||
new AccessIdValidationResource("Neese, Mario", "user171"),
|
||||
new AccessIdValidationResource("Nette, Marion", "user172"),
|
||||
new AccessIdValidationResource("Nesium, Mark", "user173"),
|
||||
new AccessIdValidationResource("Thalle, Mark", "user174"),
|
||||
new AccessIdValidationResource("Diven, Marle", "user175"),
|
||||
new AccessIdValidationResource("Fitz, Marle", "user176"),
|
||||
new AccessIdValidationResource("Pfahl, Marta", "user177"),
|
||||
new AccessIdValidationResource("Zorn, Martin", "user178"),
|
||||
new AccessIdValidationResource("Krissmes, Mary", "user179"),
|
||||
new AccessIdValidationResource("Jess, Matt", "user180"),
|
||||
new AccessIdValidationResource("Strammer, Max", "user181"),
|
||||
new AccessIdValidationResource("Mumm, Maxi", "user182"),
|
||||
new AccessIdValidationResource("Morphose, Meta", "user183"),
|
||||
new AccessIdValidationResource("Uh, Mia", "user184"),
|
||||
new AccessIdValidationResource("Rofon, Mike", "user185"),
|
||||
new AccessIdValidationResource("Rosoft, Mike", "user186"),
|
||||
new AccessIdValidationResource("Liter, Milli", "user187"),
|
||||
new AccessIdValidationResource("Thär, Milli", "user188"),
|
||||
new AccessIdValidationResource("Welle, Mirko", "user189"),
|
||||
new AccessIdValidationResource("Thorat, Mo", "user190"),
|
||||
new AccessIdValidationResource("Thor, Moni", "user191"),
|
||||
new AccessIdValidationResource("Kinolta, Monika", "user192"),
|
||||
new AccessIdValidationResource("Mundhaar, Monika", "user193"),
|
||||
new AccessIdValidationResource("Munter, Monika", "user194"),
|
||||
new AccessIdValidationResource("Zwerg, Nat", "user195"),
|
||||
new AccessIdValidationResource("Elmine, Nick", "user196"),
|
||||
new AccessIdValidationResource("Thien, Niko", "user197"),
|
||||
new AccessIdValidationResource("Pferd, Nils", "user198"),
|
||||
new AccessIdValidationResource("Lerweise, Norma", "user199"),
|
||||
new AccessIdValidationResource("Motor, Otto", "user200"),
|
||||
new AccessIdValidationResource("Päde, Otto", "user201"),
|
||||
new AccessIdValidationResource("Totol, Otto", "user202"),
|
||||
new AccessIdValidationResource("Ahner, Paul", "user203"),
|
||||
new AccessIdValidationResource("Nerr, Paula", "user204"),
|
||||
new AccessIdValidationResource("Leum, Pedro", "user205"),
|
||||
new AccessIdValidationResource("Imeter, Peer", "user206"),
|
||||
new AccessIdValidationResource("Manent, Peer", "user207"),
|
||||
new AccessIdValidationResource("Serkatze, Peer", "user208"),
|
||||
new AccessIdValidationResource("Spektive, Peer", "user209"),
|
||||
new AccessIdValidationResource("Gogisch, Peter", "user210"),
|
||||
new AccessIdValidationResource("Hacke, Peter", "user211"),
|
||||
new AccessIdValidationResource("Silje, Peter", "user212"),
|
||||
new AccessIdValidationResource("Wagen, Peter", "user213"),
|
||||
new AccessIdValidationResource("Harmonie, Phil", "user214"),
|
||||
new AccessIdValidationResource("Ologie, Phil", "user215"),
|
||||
new AccessIdValidationResource("Ihnen, Philip", "user216"),
|
||||
new AccessIdValidationResource("Nist, Pia", "user217"),
|
||||
new AccessIdValidationResource("Uto, Pia", "user218"),
|
||||
new AccessIdValidationResource("Colada, Pina", "user219"),
|
||||
new AccessIdValidationResource("Kothek, Pina", "user220"),
|
||||
new AccessIdValidationResource("Toresk, Pit", "user221"),
|
||||
new AccessIdValidationResource("Zar, Pit", "user222"),
|
||||
new AccessIdValidationResource("Carbonat, Polly", "user223"),
|
||||
new AccessIdValidationResource("Zeih, Polly", "user224"),
|
||||
new AccessIdValidationResource("Vera, Prima", "user225"),
|
||||
new AccessIdValidationResource("Tswan, Puh", "user226"),
|
||||
new AccessIdValidationResource("Chen, Qu", "user227"),
|
||||
new AccessIdValidationResource("Zufall, Rainer", "user228"),
|
||||
new AccessIdValidationResource("Tenz, Reni", "user229"),
|
||||
new AccessIdValidationResource("Lien, Rita", "user230"),
|
||||
new AccessIdValidationResource("Sport, Rita", "user231"),
|
||||
new AccessIdValidationResource("Held, Roman", "user232"),
|
||||
new AccessIdValidationResource("Nenbrot, Rosi", "user233"),
|
||||
new AccessIdValidationResource("Haar, Ross", "user234"),
|
||||
new AccessIdValidationResource("Baer, Roy", "user235"),
|
||||
new AccessIdValidationResource("Dick, Roy", "user236"),
|
||||
new AccessIdValidationResource("Mente, Rudi", "user238"),
|
||||
new AccessIdValidationResource("Enplaner, Ruth", "user239"),
|
||||
new AccessIdValidationResource("Print, Ruth", "user240"),
|
||||
new AccessIdValidationResource("Kommen, Ryan", "user241"),
|
||||
new AccessIdValidationResource("Pler, Sam", "user242"),
|
||||
new AccessIdValidationResource("Philo, Sophie", "user243"),
|
||||
new AccessIdValidationResource("Mutter, Steve", "user244"),
|
||||
new AccessIdValidationResource("Matisier, Stig", "user245"),
|
||||
new AccessIdValidationResource("Transpor, Svea", "user246"),
|
||||
new AccessIdValidationResource("Loniki, Tessa", "user247"),
|
||||
new AccessIdValidationResource("Tralisch, Thea", "user248"),
|
||||
new AccessIdValidationResource("Logie, Theo", "user249"),
|
||||
new AccessIdValidationResource("Retisch, Theo", "user250"),
|
||||
new AccessIdValidationResource("Ister, Thorn", "user251"),
|
||||
new AccessIdValidationResource("Sitter, Till", "user252"),
|
||||
new AccessIdValidationResource("Buktu, Tim", "user253"),
|
||||
new AccessIdValidationResource("Beil, Timo", "user254"),
|
||||
new AccessIdValidationResource("Ate, Tom", "user255"),
|
||||
new AccessIdValidationResource("Riga, Toni", "user256"),
|
||||
new AccessIdValidationResource("Pie, Udo", "user257"),
|
||||
new AccessIdValidationResource("Russ, Ute", "user258"),
|
||||
new AccessIdValidationResource("Aloe, Vera", "user261"),
|
||||
new AccessIdValidationResource("Breden, Vera", "user262"),
|
||||
new AccessIdValidationResource("Hausver, Walter", "user263"),
|
||||
new AccessIdValidationResource("Lismus, Wanda", "user264"),
|
||||
new AccessIdValidationResource("Schuh, Wanda", "user265"),
|
||||
new AccessIdValidationResource("Pell, Wim", "user266"),
|
||||
new AccessIdValidationResource("Rahm, Wolf", "user267"),
|
||||
new AccessIdValidationResource("sachbearbeiter", "group01"), new AccessIdValidationResource("leben", "group02"),
|
||||
new AccessIdValidationResource("chirurgie", "group03"), new AccessIdValidationResource("zahn", "group04"),
|
||||
new AccessIdValidationResource("knie", "group05"), new AccessIdValidationResource("schaden", "group06"),
|
||||
new AccessIdValidationResource("kapital", "group07"), new AccessIdValidationResource("ausland", "group08"),
|
||||
new AccessIdValidationResource("teamlead", "group09"), new AccessIdValidationResource("gesundheit", "group10"),
|
||||
new AccessIdValidationResource("vip", "group11"), new AccessIdValidationResource("manager", "group12"),
|
||||
new AccessIdValidationResource("kfz", "group13"), new AccessIdValidationResource("haftpflicht", "group14"),
|
||||
new AccessIdValidationResource("bauspar", "group15")));
|
||||
|
||||
}
|
|
@ -4,14 +4,18 @@ import java.sql.SQLException;
|
|||
|
||||
import javax.sql.DataSource;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.ComponentScan;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
import org.springframework.core.env.Environment;
|
||||
import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
|
||||
import org.springframework.http.converter.json.SpringHandlerInstantiator;
|
||||
import org.springframework.ldap.core.LdapTemplate;
|
||||
import org.springframework.ldap.core.support.LdapContextSource;
|
||||
import org.springframework.transaction.annotation.EnableTransactionManagement;
|
||||
|
||||
import com.fasterxml.jackson.databind.cfg.HandlerInstantiator;
|
||||
|
@ -23,6 +27,7 @@ import pro.taskana.TaskanaEngine;
|
|||
import pro.taskana.WorkbasketService;
|
||||
import pro.taskana.configuration.SpringTaskanaEngineConfiguration;
|
||||
import pro.taskana.configuration.TaskanaEngineConfiguration;
|
||||
import pro.taskana.ldap.LdapClient;
|
||||
|
||||
/**
|
||||
* Configuration for REST service.
|
||||
|
@ -32,6 +37,44 @@ import pro.taskana.configuration.TaskanaEngineConfiguration;
|
|||
@EnableTransactionManagement
|
||||
public class RestConfiguration {
|
||||
|
||||
@Autowired
|
||||
private Environment env;
|
||||
|
||||
@Bean
|
||||
public LdapContextSource contextSource() {
|
||||
|
||||
LdapContextSource contextSource = new LdapContextSource();
|
||||
boolean useLdap;
|
||||
String useLdapConfigValue = env.getProperty("taskana.ldap.useLdap");
|
||||
if (useLdapConfigValue == null || useLdapConfigValue.isEmpty()) {
|
||||
useLdap = false;
|
||||
} else {
|
||||
useLdap = Boolean.parseBoolean(useLdapConfigValue);
|
||||
}
|
||||
if (useLdap) {
|
||||
contextSource.setUrl(env.getRequiredProperty("taskana.ldap.serverUrl"));
|
||||
contextSource.setBase(env.getRequiredProperty("taskana.ldap.baseDn"));
|
||||
contextSource.setUserDn(env.getRequiredProperty("taskana.ldap.bindDn"));
|
||||
contextSource.setPassword(env.getRequiredProperty("taskana.ldap.bindPassword"));
|
||||
} else {
|
||||
contextSource.setUrl("ldap://com.dummy:9999");
|
||||
contextSource.setBase("o=taskana");
|
||||
contextSource.setUserDn("user");
|
||||
contextSource.setPassword("secret");
|
||||
}
|
||||
return contextSource;
|
||||
}
|
||||
|
||||
@Bean
|
||||
public LdapClient ldapClient() {
|
||||
return new LdapClient();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public LdapTemplate ldapTemplate() {
|
||||
return new LdapTemplate(contextSource());
|
||||
}
|
||||
|
||||
@Bean
|
||||
public ClassificationService getClassificationService(TaskanaEngine taskanaEngine) {
|
||||
return taskanaEngine.getClassificationService();
|
||||
|
@ -73,7 +116,7 @@ public class RestConfiguration {
|
|||
return b;
|
||||
}
|
||||
|
||||
//Needed for injection into jackson deserializer.
|
||||
// Needed for injection into jackson deserializer.
|
||||
@Bean
|
||||
public HandlerInstantiator handlerInstantiator(ApplicationContext context) {
|
||||
return new SpringHandlerInstantiator(context.getAutowireCapableBeanFactory());
|
||||
|
|
|
@ -5,16 +5,16 @@ package pro.taskana.rest.resource;
|
|||
*
|
||||
* @author bbr
|
||||
*/
|
||||
public class AccessIdValidationResource {
|
||||
public class AccessIdResource {
|
||||
|
||||
public String name;
|
||||
public String accessId;
|
||||
|
||||
public AccessIdValidationResource() {
|
||||
public AccessIdResource() {
|
||||
|
||||
}
|
||||
|
||||
public AccessIdValidationResource(String name, String accessId) {
|
||||
public AccessIdResource(String name, String accessId) {
|
||||
this.accessId = accessId;
|
||||
this.name = name;
|
||||
}
|
||||
|
@ -35,4 +35,15 @@ public class AccessIdValidationResource {
|
|||
this.name = name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder builder = new StringBuilder();
|
||||
builder.append("AccessIdResource [name=");
|
||||
builder.append(name);
|
||||
builder.append(", accessId=");
|
||||
builder.append(accessId);
|
||||
builder.append("]");
|
||||
return builder.toString();
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue