Integrated lite controllers, services and tests in full version.
Change-Id: I14f9437d9cae6418b3b89bbfee810f95a0e74832
diff --git a/full/src/main/java/de/ids_mannheim/de/init/Initializator.java b/full/src/main/java/de/ids_mannheim/de/init/Initializator.java
new file mode 100644
index 0000000..0ef9dbb
--- /dev/null
+++ b/full/src/main/java/de/ids_mannheim/de/init/Initializator.java
@@ -0,0 +1,19 @@
+package de.ids_mannheim.de.init;
+
+import java.io.IOException;
+
+import de.ids_mannheim.korap.exceptions.KustvaktException;
+import de.ids_mannheim.korap.util.QueryException;
+
+/** Init methods run after spring dependency injection
+ *
+ * @author margaretha
+ *
+ */
+public interface Initializator {
+
+ void init () throws IOException, QueryException, KustvaktException;
+
+ void initTest () throws IOException, KustvaktException;
+
+}
\ No newline at end of file
diff --git a/full/src/main/java/de/ids_mannheim/korap/config/Initializator.java b/full/src/main/java/de/ids_mannheim/de/init/InitializatorImpl.java
similarity index 79%
rename from full/src/main/java/de/ids_mannheim/korap/config/Initializator.java
rename to full/src/main/java/de/ids_mannheim/de/init/InitializatorImpl.java
index e6347e8..318f47e 100644
--- a/full/src/main/java/de/ids_mannheim/korap/config/Initializator.java
+++ b/full/src/main/java/de/ids_mannheim/de/init/InitializatorImpl.java
@@ -1,4 +1,4 @@
-package de.ids_mannheim.korap.config;
+package de.ids_mannheim.de.init;
import java.io.IOException;
import java.util.EnumSet;
@@ -7,6 +7,7 @@
import de.ids_mannheim.korap.annotation.AnnotationParser;
import de.ids_mannheim.korap.annotation.FreeResourceParser;
+import de.ids_mannheim.korap.config.NamedVCLoader;
import de.ids_mannheim.korap.exceptions.KustvaktException;
import de.ids_mannheim.korap.oauth2.constant.OAuth2Scope;
import de.ids_mannheim.korap.oauth2.dao.AccessScopeDao;
@@ -19,7 +20,7 @@
* @author margaretha
*
*/
-public class Initializator {
+public class InitializatorImpl implements Initializator {
@Autowired
private AccessScopeDao accessScopeDao;
@@ -30,8 +31,12 @@
@Autowired
private FreeResourceParser resourceParser;
- public Initializator () {}
+ public InitializatorImpl () {}
+ /* (non-Javadoc)
+ * @see de.ids_mannheim.de.init.Initializator#init()
+ */
+ @Override
public void init () throws IOException, QueryException, KustvaktException {
setInitialAccessScope();
loader.loadVCToCache();
@@ -45,6 +50,10 @@
resourceParser.run();
}
+ /* (non-Javadoc)
+ * @see de.ids_mannheim.de.init.Initializator#initTest()
+ */
+ @Override
public void initTest () throws IOException, KustvaktException {
setInitialAccessScope();
annotationParser.run();
diff --git a/full/src/main/java/de/ids_mannheim/de/init/LiteInitializatorImpl.java b/full/src/main/java/de/ids_mannheim/de/init/LiteInitializatorImpl.java
new file mode 100644
index 0000000..31d90af
--- /dev/null
+++ b/full/src/main/java/de/ids_mannheim/de/init/LiteInitializatorImpl.java
@@ -0,0 +1,26 @@
+package de.ids_mannheim.de.init;
+
+import java.io.IOException;
+
+import org.springframework.beans.factory.annotation.Autowired;
+
+import de.ids_mannheim.korap.annotation.AnnotationParser;
+import de.ids_mannheim.korap.exceptions.KustvaktException;
+import de.ids_mannheim.korap.util.QueryException;
+
+public class LiteInitializatorImpl implements Initializator {
+
+ @Autowired
+ private AnnotationParser annotationParser;
+
+ @Override
+ public void init () throws IOException, QueryException, KustvaktException {
+ annotationParser.run();
+ }
+
+ @Override
+ public void initTest () throws IOException, KustvaktException {
+ annotationParser.run();
+ }
+
+}
diff --git a/full/src/main/java/de/ids_mannheim/korap/annotation/AnnotationParser.java b/full/src/main/java/de/ids_mannheim/korap/annotation/AnnotationParser.java
index c05ae6b..4f995cb 100644
--- a/full/src/main/java/de/ids_mannheim/korap/annotation/AnnotationParser.java
+++ b/full/src/main/java/de/ids_mannheim/korap/annotation/AnnotationParser.java
@@ -58,7 +58,7 @@
private void readFile (File file) throws IOException {
BufferedReader br = new BufferedReader(
- new InputStreamReader(new FileInputStream(file)));
+ new InputStreamReader(new FileInputStream(file)), 1024);
foundry = null;
diff --git a/full/src/main/java/de/ids_mannheim/korap/interfaces/AuthenticationManagerIface.java b/full/src/main/java/de/ids_mannheim/korap/authentication/AuthenticationManager.java
similarity index 66%
rename from full/src/main/java/de/ids_mannheim/korap/interfaces/AuthenticationManagerIface.java
rename to full/src/main/java/de/ids_mannheim/korap/authentication/AuthenticationManager.java
index 4f3fcc0..e9e6764 100644
--- a/full/src/main/java/de/ids_mannheim/korap/interfaces/AuthenticationManagerIface.java
+++ b/full/src/main/java/de/ids_mannheim/korap/authentication/AuthenticationManager.java
@@ -1,4 +1,4 @@
-package de.ids_mannheim.korap.interfaces;
+package de.ids_mannheim.korap.authentication;
import java.util.HashMap;
import java.util.Map;
@@ -10,6 +10,7 @@
import de.ids_mannheim.korap.constant.AuthenticationMethod;
import de.ids_mannheim.korap.constant.TokenType;
import de.ids_mannheim.korap.exceptions.KustvaktException;
+import de.ids_mannheim.korap.interfaces.AuthenticationIface;
import de.ids_mannheim.korap.security.context.TokenContext;
import de.ids_mannheim.korap.user.User;
import de.ids_mannheim.korap.user.Userdata;
@@ -18,112 +19,84 @@
* @author hanl
* @date 15/06/2015
*/
-public abstract class AuthenticationManagerIface extends KustvaktCacheable {
+public abstract class AuthenticationManager extends KustvaktCacheable {
private Map<TokenType, AuthenticationIface> providers;
-
- public AuthenticationManagerIface () {
+ public AuthenticationManager () {
super("id_tokens", "key:id_tokens");
this.providers = new HashMap<>();
}
-
public void setProviders (Set<AuthenticationIface> providers) {
- for (AuthenticationIface i : providers){
+ for (AuthenticationIface i : providers) {
this.providers.put(i.getTokenType(), i);
}
}
+ protected AuthenticationIface getProvider (TokenType scheme,
+ TokenType default_iface) {
- protected AuthenticationIface getProvider (TokenType scheme, TokenType default_iface) {
-
- // Debug FB: loop a Map
-
- /*for (Map.Entry<String, AuthenticationIface> entry : this.providers.entrySet())
- {
- System.out.println("Debug: provider: Key : " + entry.getKey() + " Value : " + entry.getValue());
- }
- */
- // todo: configurable authentication schema
- if (scheme == null){
+ // Debug FB: loop a Map
+
+ /*for (Map.Entry<String, AuthenticationIface> entry : this.providers.entrySet())
+ {
+ System.out.println("Debug: provider: Key : " + entry.getKey() + " Value : " + entry.getValue());
+ }
+ */
+ // todo: configurable authentication schema
+ if (scheme == null) {
return this.providers.get(default_iface);
}
- else{
+ else {
return this.providers.get(scheme);
}
}
-
- public abstract TokenContext getTokenContext (TokenType type,
- String token, String host, String useragent)
- throws KustvaktException;
-
+ public abstract TokenContext getTokenContext (TokenType type, String token,
+ String host, String useragent) throws KustvaktException;
public abstract User getUser (String username) throws KustvaktException;
public abstract boolean isRegistered (String id);
-
- public abstract User authenticate (AuthenticationMethod method, String username,
- String password, Map<String, Object> attributes)
+ public abstract User authenticate (AuthenticationMethod method,
+ String username, String password, Map<String, Object> attributes)
throws KustvaktException;
- // public abstract User authenticate (int type, String username,
- // String password, Map<String, Object> attributes)
- // throws KustvaktException;
-
-
public abstract TokenContext createTokenContext (User user,
- Map<String, Object> attr, TokenType type)
- throws KustvaktException;
-
-// public abstract TokenContext createTokenContext (User user,
-// Map<String, Object> attr, String provider_key)
-// throws KustvaktException;
+ Map<String, Object> attr, TokenType type) throws KustvaktException;
public abstract void setAccessAndLocation (User user, HttpHeaders headers);
public abstract void logout (TokenContext context) throws KustvaktException;
-
public abstract void lockAccount (User user) throws KustvaktException;
-
public abstract User createUserAccount (Map<String, Object> attributes,
boolean confirmation_required) throws KustvaktException;
-
- // public abstract boolean updateAccount(User user) throws KustvaktException;
-
public abstract boolean deleteAccount (User user) throws KustvaktException;
-
public abstract <T extends Userdata> T getUserData (User user,
Class<T> clazz) throws KustvaktException;
-
public abstract void updateUserData (Userdata data)
throws KustvaktException;
-
public abstract Object[] validateResetPasswordRequest (String username,
String email) throws KustvaktException;
-
public abstract void resetPassword (String uriFragment, String username,
String newPassphrase) throws KustvaktException;
-
public abstract void confirmRegistration (String uriFragment,
String username) throws KustvaktException;
-
public String providerList () {
return "provider list: " + this.providers.toString();
}
-
public abstract User getUser (String username, String method)
throws KustvaktException;
diff --git a/full/src/main/java/de/ids_mannheim/korap/authentication/DummyAuthenticationManager.java b/full/src/main/java/de/ids_mannheim/korap/authentication/DummyAuthenticationManager.java
new file mode 100644
index 0000000..0a473ac
--- /dev/null
+++ b/full/src/main/java/de/ids_mannheim/korap/authentication/DummyAuthenticationManager.java
@@ -0,0 +1,136 @@
+package de.ids_mannheim.korap.authentication;
+
+import java.util.Map;
+
+import javax.ws.rs.core.HttpHeaders;
+
+import org.springframework.beans.factory.annotation.Autowired;
+
+import de.ids_mannheim.korap.config.KustvaktConfiguration;
+import de.ids_mannheim.korap.constant.AuthenticationMethod;
+import de.ids_mannheim.korap.constant.TokenType;
+import de.ids_mannheim.korap.exceptions.KustvaktException;
+import de.ids_mannheim.korap.security.context.TokenContext;
+import de.ids_mannheim.korap.user.User;
+import de.ids_mannheim.korap.user.Userdata;
+import de.ids_mannheim.korap.utils.TimeUtils;
+
+public class DummyAuthenticationManager extends AuthenticationManager {
+
+ @Autowired
+ private KustvaktConfiguration config;
+
+ @Override
+ public TokenContext getTokenContext (TokenType type, String token,
+ String host, String useragent) throws KustvaktException {
+ TokenContext c = new TokenContext();
+ c.setUsername("guest");
+ c.setHostAddress(host);
+ c.setUserAgent(useragent);
+ c.setExpirationTime(
+ TimeUtils.plusSeconds(config.getShortTokenTTL()).getMillis());
+ c.setTokenType(TokenType.BASIC);
+ c.setToken("dummyToken");
+ return c;
+ }
+
+ @Override
+ public User getUser (String username) throws KustvaktException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public boolean isRegistered (String id) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public User authenticate (AuthenticationMethod method, String username,
+ String password, Map<String, Object> attributes)
+ throws KustvaktException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public TokenContext createTokenContext (User user, Map<String, Object> attr,
+ TokenType type) throws KustvaktException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public void setAccessAndLocation (User user, HttpHeaders headers) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void logout (TokenContext context) throws KustvaktException {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void lockAccount (User user) throws KustvaktException {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public User createUserAccount (Map<String, Object> attributes,
+ boolean confirmation_required) throws KustvaktException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public boolean deleteAccount (User user) throws KustvaktException {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public <T extends Userdata> T getUserData (User user, Class<T> clazz)
+ throws KustvaktException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public void updateUserData (Userdata data) throws KustvaktException {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public Object[] validateResetPasswordRequest (String username, String email)
+ throws KustvaktException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public void resetPassword (String uriFragment, String username,
+ String newPassphrase) throws KustvaktException {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void confirmRegistration (String uriFragment, String username)
+ throws KustvaktException {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public User getUser (String username, String method)
+ throws KustvaktException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+}
diff --git a/full/src/main/java/de/ids_mannheim/korap/authentication/KustvaktAuthenticationManager.java b/full/src/main/java/de/ids_mannheim/korap/authentication/KustvaktAuthenticationManager.java
index 64ed9ac..6aa5b9f 100644
--- a/full/src/main/java/de/ids_mannheim/korap/authentication/KustvaktAuthenticationManager.java
+++ b/full/src/main/java/de/ids_mannheim/korap/authentication/KustvaktAuthenticationManager.java
@@ -34,7 +34,6 @@
import de.ids_mannheim.korap.exceptions.StatusCodes;
import de.ids_mannheim.korap.exceptions.WrappedException;
import de.ids_mannheim.korap.interfaces.AuthenticationIface;
-import de.ids_mannheim.korap.interfaces.AuthenticationManagerIface;
import de.ids_mannheim.korap.interfaces.EncryptionIface;
import de.ids_mannheim.korap.interfaces.EntityHandlerIface;
import de.ids_mannheim.korap.interfaces.ValidatorIface;
@@ -60,7 +59,7 @@
*
* @author hanl
*/
-public class KustvaktAuthenticationManager extends AuthenticationManagerIface {
+public class KustvaktAuthenticationManager extends AuthenticationManager {
private static Logger jlog = LogManager.getLogger(KustvaktAuthenticationManager.class);
private EncryptionIface crypto;
diff --git a/full/src/main/java/de/ids_mannheim/korap/config/FullConfiguration.java b/full/src/main/java/de/ids_mannheim/korap/config/FullConfiguration.java
index bbed39c..ba5a5a4 100644
--- a/full/src/main/java/de/ids_mannheim/korap/config/FullConfiguration.java
+++ b/full/src/main/java/de/ids_mannheim/korap/config/FullConfiguration.java
@@ -56,10 +56,6 @@
private List<String> publicRegexList;
private List<String> allRegexList;
- private Pattern publicLicensePattern;
- private Pattern freeLicensePattern;
- private Pattern allLicensePattern;
-
private String authenticationScheme;
private boolean isSoftDeleteAutoGroup;
diff --git a/full/src/main/java/de/ids_mannheim/korap/dao/AdminDao.java b/full/src/main/java/de/ids_mannheim/korap/dao/AdminDao.java
index 1a749df..fcf32d0 100644
--- a/full/src/main/java/de/ids_mannheim/korap/dao/AdminDao.java
+++ b/full/src/main/java/de/ids_mannheim/korap/dao/AdminDao.java
@@ -1,56 +1,11 @@
package de.ids_mannheim.korap.dao;
-import javax.persistence.EntityManager;
-import javax.persistence.NoResultException;
-import javax.persistence.PersistenceContext;
-import javax.persistence.Query;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-
-import org.springframework.stereotype.Repository;
-import org.springframework.transaction.annotation.Transactional;
-
-import de.ids_mannheim.korap.entity.Admin;
-import de.ids_mannheim.korap.entity.Admin_;
import de.ids_mannheim.korap.user.User;
-/**
- * @author margaretha
- *
- */
-@Transactional
-@Repository
-public class AdminDao {
+public interface AdminDao {
- @PersistenceContext
- private EntityManager entityManager;
+ void addAccount (User user);
- public void addAccount (User user) {
- Admin admin = new Admin();
- admin.setUserId(user.getUsername());
- entityManager.persist(admin);
- }
+ boolean isAdmin (String userId);
- public boolean isAdmin (String userId) {
- CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
- CriteriaQuery<Admin> query = criteriaBuilder.createQuery(Admin.class);
-
- Root<Admin> admin = query.from(Admin.class);
- Predicate p = criteriaBuilder.equal(admin.get(Admin_.userId), userId);
-
- query.select(admin);
- query.where(p);
-
- Query q = entityManager.createQuery(query);
- try {
- q.getSingleResult();
- }
- catch (NoResultException e) {
- return false;
- }
-
- return true;
- }
-}
+}
\ No newline at end of file
diff --git a/full/src/main/java/de/ids_mannheim/korap/dao/AdminDaoImpl.java b/full/src/main/java/de/ids_mannheim/korap/dao/AdminDaoImpl.java
new file mode 100644
index 0000000..62d8e02
--- /dev/null
+++ b/full/src/main/java/de/ids_mannheim/korap/dao/AdminDaoImpl.java
@@ -0,0 +1,64 @@
+package de.ids_mannheim.korap.dao;
+
+import javax.persistence.EntityManager;
+import javax.persistence.NoResultException;
+import javax.persistence.PersistenceContext;
+import javax.persistence.Query;
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+
+import org.springframework.stereotype.Repository;
+import org.springframework.transaction.annotation.Transactional;
+
+import de.ids_mannheim.korap.entity.Admin;
+import de.ids_mannheim.korap.entity.Admin_;
+import de.ids_mannheim.korap.user.User;
+
+/**
+ * @author margaretha
+ *
+ */
+@Transactional
+@Repository
+public class AdminDaoImpl implements AdminDao {
+
+ @PersistenceContext
+ private EntityManager entityManager;
+
+ /* (non-Javadoc)
+ * @see de.ids_mannheim.korap.dao.AdminDao#addAccount(de.ids_mannheim.korap.user.User)
+ */
+ @Override
+ public void addAccount (User user) {
+ Admin admin = new Admin();
+ admin.setUserId(user.getUsername());
+ entityManager.persist(admin);
+ }
+
+ /* (non-Javadoc)
+ * @see de.ids_mannheim.korap.dao.AdminDao#isAdmin(java.lang.String)
+ */
+ @Override
+ public boolean isAdmin (String userId) {
+ CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
+ CriteriaQuery<Admin> query = criteriaBuilder.createQuery(Admin.class);
+
+ Root<Admin> admin = query.from(Admin.class);
+ Predicate p = criteriaBuilder.equal(admin.get(Admin_.userId), userId);
+
+ query.select(admin);
+ query.where(p);
+
+ Query q = entityManager.createQuery(query);
+ try {
+ q.getSingleResult();
+ }
+ catch (NoResultException e) {
+ return false;
+ }
+
+ return true;
+ }
+}
diff --git a/full/src/main/java/de/ids_mannheim/korap/dao/DummyAdminDaoImpl.java b/full/src/main/java/de/ids_mannheim/korap/dao/DummyAdminDaoImpl.java
new file mode 100644
index 0000000..0d31885
--- /dev/null
+++ b/full/src/main/java/de/ids_mannheim/korap/dao/DummyAdminDaoImpl.java
@@ -0,0 +1,18 @@
+package de.ids_mannheim.korap.dao;
+
+import de.ids_mannheim.korap.user.User;
+
+public class DummyAdminDaoImpl implements AdminDao {
+
+ @Override
+ public void addAccount (User user) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public boolean isAdmin (String userId) {
+ return false;
+ }
+
+}
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/AuthorizationDao.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/AuthorizationDao.java
index 4abb92b..aa05d5d 100644
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/AuthorizationDao.java
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/AuthorizationDao.java
@@ -1,119 +1,24 @@
package de.ids_mannheim.korap.oauth2.dao;
-import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.util.List;
import java.util.Set;
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
-import javax.persistence.Query;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Repository;
-import org.springframework.transaction.annotation.Transactional;
-
-import de.ids_mannheim.korap.config.Attributes;
-import de.ids_mannheim.korap.config.FullConfiguration;
import de.ids_mannheim.korap.exceptions.KustvaktException;
-import de.ids_mannheim.korap.exceptions.StatusCodes;
-import de.ids_mannheim.korap.oauth2.constant.OAuth2Error;
import de.ids_mannheim.korap.oauth2.entity.AccessScope;
import de.ids_mannheim.korap.oauth2.entity.Authorization;
-import de.ids_mannheim.korap.oauth2.entity.Authorization_;
-import de.ids_mannheim.korap.oauth2.interfaces.AuthorizationDaoInterface;
-import de.ids_mannheim.korap.utils.ParameterChecker;
-@Transactional
-@Repository
-public class AuthorizationDao implements AuthorizationDaoInterface {
+public interface AuthorizationDao {
- @PersistenceContext
- private EntityManager entityManager;
- @Autowired
- private FullConfiguration config;
-
public Authorization storeAuthorizationCode (String clientId, String userId,
String code, Set<AccessScope> scopes, String redirectURI,
- ZonedDateTime authenticationTime, String nonce)
- throws KustvaktException {
- ParameterChecker.checkStringValue(clientId, "client_id");
- ParameterChecker.checkStringValue(userId, "userId");
- ParameterChecker.checkStringValue(code, "authorization code");
- ParameterChecker.checkCollection(scopes, "scopes");
- ParameterChecker.checkObjectValue(authenticationTime,
- "user authentication time");
-
- Authorization authorization = new Authorization();
- authorization.setCode(code);
- authorization.setClientId(clientId);
- authorization.setUserId(userId);
- authorization.setScopes(scopes);
- authorization.setRedirectURI(redirectURI);
- authorization.setUserAuthenticationTime(authenticationTime);
- authorization.setNonce(nonce);
-
- ZonedDateTime now =
- ZonedDateTime.now(ZoneId.of(Attributes.DEFAULT_TIME_ZONE));
- authorization.setCreatedDate(now);
- authorization.setExpiryDate(
- now.plusSeconds(config.getAuthorizationCodeExpiry()));
-
- entityManager.persist(authorization);
- // what if unique fails
- return authorization;
- }
-
+ ZonedDateTime authenticationTime, String nonce) throws KustvaktException;
+
public Authorization retrieveAuthorizationCode (String code)
- throws KustvaktException {
- ParameterChecker.checkStringValue(code, "code");
-
- CriteriaBuilder builder = entityManager.getCriteriaBuilder();
- CriteriaQuery<Authorization> query =
- builder.createQuery(Authorization.class);
- Root<Authorization> root = query.from(Authorization.class);
-
- Predicate restrictions =
- builder.equal(root.get(Authorization_.code), code);
-
- query.select(root);
- query.where(restrictions);
- Query q = entityManager.createQuery(query);
- try {
- return (Authorization) q.getSingleResult();
- }
- catch (Exception e) {
- throw new KustvaktException(StatusCodes.INVALID_AUTHORIZATION,
- "Invalid authorization: " + e.getMessage(),
- OAuth2Error.INVALID_REQUEST);
- }
- }
-
+ throws KustvaktException;
+
public Authorization updateAuthorization (Authorization authorization)
- throws KustvaktException {
- ParameterChecker.checkObjectValue(authorization, "authorization");
- authorization = entityManager.merge(authorization);
- return authorization;
- }
+ throws KustvaktException;
- @SuppressWarnings("unchecked")
- @Override
- public List<Authorization> retrieveAuthorizationsByClientId (String clientId) {
- CriteriaBuilder builder = entityManager.getCriteriaBuilder();
- CriteriaQuery<Authorization> query =
- builder.createQuery(Authorization.class);
- Root<Authorization> root = query.from(Authorization.class);
-
- Predicate restrictions =
- builder.equal(root.get(Authorization_.clientId), clientId);
-
- query.select(root);
- query.where(restrictions);
- Query q = entityManager.createQuery(query);
- return q.getResultList();
- }
+ public List<Authorization> retrieveAuthorizationsByClientId (String clientId);
}
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/AuthorizationDaoImpl.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/AuthorizationDaoImpl.java
new file mode 100644
index 0000000..538c655
--- /dev/null
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/AuthorizationDaoImpl.java
@@ -0,0 +1,118 @@
+package de.ids_mannheim.korap.oauth2.dao;
+
+import java.time.ZoneId;
+import java.time.ZonedDateTime;
+import java.util.List;
+import java.util.Set;
+
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.Query;
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Repository;
+import org.springframework.transaction.annotation.Transactional;
+
+import de.ids_mannheim.korap.config.Attributes;
+import de.ids_mannheim.korap.config.FullConfiguration;
+import de.ids_mannheim.korap.exceptions.KustvaktException;
+import de.ids_mannheim.korap.exceptions.StatusCodes;
+import de.ids_mannheim.korap.oauth2.constant.OAuth2Error;
+import de.ids_mannheim.korap.oauth2.entity.AccessScope;
+import de.ids_mannheim.korap.oauth2.entity.Authorization;
+import de.ids_mannheim.korap.oauth2.entity.Authorization_;
+import de.ids_mannheim.korap.utils.ParameterChecker;
+
+@Transactional
+@Repository
+public class AuthorizationDaoImpl implements AuthorizationDao {
+
+ @PersistenceContext
+ private EntityManager entityManager;
+ @Autowired
+ private FullConfiguration config;
+
+ public Authorization storeAuthorizationCode (String clientId, String userId,
+ String code, Set<AccessScope> scopes, String redirectURI,
+ ZonedDateTime authenticationTime, String nonce)
+ throws KustvaktException {
+ ParameterChecker.checkStringValue(clientId, "client_id");
+ ParameterChecker.checkStringValue(userId, "userId");
+ ParameterChecker.checkStringValue(code, "authorization code");
+ ParameterChecker.checkCollection(scopes, "scopes");
+ ParameterChecker.checkObjectValue(authenticationTime,
+ "user authentication time");
+
+ Authorization authorization = new Authorization();
+ authorization.setCode(code);
+ authorization.setClientId(clientId);
+ authorization.setUserId(userId);
+ authorization.setScopes(scopes);
+ authorization.setRedirectURI(redirectURI);
+ authorization.setUserAuthenticationTime(authenticationTime);
+ authorization.setNonce(nonce);
+
+ ZonedDateTime now =
+ ZonedDateTime.now(ZoneId.of(Attributes.DEFAULT_TIME_ZONE));
+ authorization.setCreatedDate(now);
+ authorization.setExpiryDate(
+ now.plusSeconds(config.getAuthorizationCodeExpiry()));
+
+ entityManager.persist(authorization);
+ // what if unique fails
+ return authorization;
+ }
+
+ public Authorization retrieveAuthorizationCode (String code)
+ throws KustvaktException {
+ ParameterChecker.checkStringValue(code, "code");
+
+ CriteriaBuilder builder = entityManager.getCriteriaBuilder();
+ CriteriaQuery<Authorization> query =
+ builder.createQuery(Authorization.class);
+ Root<Authorization> root = query.from(Authorization.class);
+
+ Predicate restrictions =
+ builder.equal(root.get(Authorization_.code), code);
+
+ query.select(root);
+ query.where(restrictions);
+ Query q = entityManager.createQuery(query);
+ try {
+ return (Authorization) q.getSingleResult();
+ }
+ catch (Exception e) {
+ throw new KustvaktException(StatusCodes.INVALID_AUTHORIZATION,
+ "Invalid authorization: " + e.getMessage(),
+ OAuth2Error.INVALID_REQUEST);
+ }
+ }
+
+ public Authorization updateAuthorization (Authorization authorization)
+ throws KustvaktException {
+ ParameterChecker.checkObjectValue(authorization, "authorization");
+ authorization = entityManager.merge(authorization);
+ return authorization;
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public List<Authorization> retrieveAuthorizationsByClientId (String clientId) {
+ CriteriaBuilder builder = entityManager.getCriteriaBuilder();
+ CriteriaQuery<Authorization> query =
+ builder.createQuery(Authorization.class);
+ Root<Authorization> root = query.from(Authorization.class);
+
+ Predicate restrictions =
+ builder.equal(root.get(Authorization_.clientId), clientId);
+
+ query.select(root);
+ query.where(restrictions);
+ Query q = entityManager.createQuery(query);
+ return q.getResultList();
+ }
+}
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/AuthorizationCacheDao.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/CachedAuthorizationDaoImpl.java
similarity index 93%
rename from full/src/main/java/de/ids_mannheim/korap/oauth2/dao/AuthorizationCacheDao.java
rename to full/src/main/java/de/ids_mannheim/korap/oauth2/dao/CachedAuthorizationDaoImpl.java
index ee2b130..ed848bc 100644
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/AuthorizationCacheDao.java
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/CachedAuthorizationDaoImpl.java
@@ -17,17 +17,16 @@
import de.ids_mannheim.korap.oauth2.constant.OAuth2Error;
import de.ids_mannheim.korap.oauth2.entity.AccessScope;
import de.ids_mannheim.korap.oauth2.entity.Authorization;
-import de.ids_mannheim.korap.oauth2.interfaces.AuthorizationDaoInterface;
import de.ids_mannheim.korap.utils.ParameterChecker;
import net.sf.ehcache.Element;
-public class AuthorizationCacheDao extends KustvaktCacheable
- implements AuthorizationDaoInterface {
+public class CachedAuthorizationDaoImpl extends KustvaktCacheable
+ implements AuthorizationDao {
@Autowired
private FullConfiguration config;
- public AuthorizationCacheDao () {
+ public CachedAuthorizationDaoImpl () {
super("authorization", "key:authorization");
}
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/interfaces/AuthorizationDaoInterface.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/interfaces/AuthorizationDaoInterface.java
deleted file mode 100644
index 8dcde58..0000000
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/interfaces/AuthorizationDaoInterface.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package de.ids_mannheim.korap.oauth2.interfaces;
-
-import java.time.ZonedDateTime;
-import java.util.List;
-import java.util.Set;
-
-import de.ids_mannheim.korap.exceptions.KustvaktException;
-import de.ids_mannheim.korap.oauth2.entity.AccessScope;
-import de.ids_mannheim.korap.oauth2.entity.Authorization;
-
-public interface AuthorizationDaoInterface {
-
- public Authorization storeAuthorizationCode (String clientId, String userId,
- String code, Set<AccessScope> scopes, String redirectURI,
- ZonedDateTime authenticationTime, String nonce) throws KustvaktException;
-
- public Authorization retrieveAuthorizationCode (String code)
- throws KustvaktException;
-
- public Authorization updateAuthorization (Authorization authorization)
- throws KustvaktException;
-
- public List<Authorization> retrieveAuthorizationsByClientId (String clientId);
-}
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/service/DummyOAuth2ScopeServiceImpl.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/service/DummyOAuth2ScopeServiceImpl.java
new file mode 100644
index 0000000..4cafce0
--- /dev/null
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth2/service/DummyOAuth2ScopeServiceImpl.java
@@ -0,0 +1,54 @@
+package de.ids_mannheim.korap.oauth2.service;
+
+import java.util.Collection;
+import java.util.Set;
+
+import de.ids_mannheim.korap.exceptions.KustvaktException;
+import de.ids_mannheim.korap.oauth2.constant.OAuth2Scope;
+import de.ids_mannheim.korap.oauth2.entity.AccessScope;
+import de.ids_mannheim.korap.security.context.TokenContext;
+
+public class DummyOAuth2ScopeServiceImpl implements OAuth2ScopeService {
+
+ @Override
+ public Set<AccessScope> convertToAccessScope (Collection<String> scopes)
+ throws KustvaktException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public String convertAccessScopesToString (Set<AccessScope> scopes) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public Set<String> convertAccessScopesToStringSet (
+ Set<AccessScope> scopes) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public Set<String> filterScopes (Set<String> scopes,
+ Set<String> defaultScopes) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public void verifyScope (TokenContext context, OAuth2Scope requiredScope)
+ throws KustvaktException {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public Set<AccessScope> verifyRefreshScope (Set<String> requestScopes,
+ Set<AccessScope> originalScopes) throws KustvaktException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+}
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2AuthorizationService.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2AuthorizationService.java
index a8e7106..37e89ef 100644
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2AuthorizationService.java
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2AuthorizationService.java
@@ -14,10 +14,10 @@
import de.ids_mannheim.korap.exceptions.KustvaktException;
import de.ids_mannheim.korap.exceptions.StatusCodes;
import de.ids_mannheim.korap.oauth2.constant.OAuth2Error;
+import de.ids_mannheim.korap.oauth2.dao.AuthorizationDao;
import de.ids_mannheim.korap.oauth2.entity.AccessScope;
import de.ids_mannheim.korap.oauth2.entity.Authorization;
import de.ids_mannheim.korap.oauth2.entity.OAuth2Client;
-import de.ids_mannheim.korap.oauth2.interfaces.AuthorizationDaoInterface;
@Service(value = "authorizationService")
public class OAuth2AuthorizationService {
@@ -30,7 +30,7 @@
@Autowired
protected OAuth2ScopeService scopeService;
@Autowired
- private AuthorizationDaoInterface authorizationDao;
+ private AuthorizationDao authorizationDao;
@Autowired
protected FullConfiguration config;
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2ClientService.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2ClientService.java
index f077e33..47dffe3 100644
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2ClientService.java
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2ClientService.java
@@ -20,6 +20,7 @@
import de.ids_mannheim.korap.oauth2.constant.OAuth2ClientType;
import de.ids_mannheim.korap.oauth2.constant.OAuth2Error;
import de.ids_mannheim.korap.oauth2.dao.AccessTokenDao;
+import de.ids_mannheim.korap.oauth2.dao.AuthorizationDao;
import de.ids_mannheim.korap.oauth2.dao.OAuth2ClientDao;
import de.ids_mannheim.korap.oauth2.dao.RefreshTokenDao;
import de.ids_mannheim.korap.oauth2.dto.OAuth2ClientDto;
@@ -28,7 +29,6 @@
import de.ids_mannheim.korap.oauth2.entity.Authorization;
import de.ids_mannheim.korap.oauth2.entity.OAuth2Client;
import de.ids_mannheim.korap.oauth2.entity.RefreshToken;
-import de.ids_mannheim.korap.oauth2.interfaces.AuthorizationDaoInterface;
import de.ids_mannheim.korap.web.input.OAuth2ClientJson;
/**
@@ -58,7 +58,7 @@
@Autowired
private RefreshTokenDao refreshDao;
@Autowired
- private AuthorizationDaoInterface authorizationDao;
+ private AuthorizationDao authorizationDao;
@Autowired
private AdminDao adminDao;
@Autowired
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2ScopeService.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2ScopeService.java
index bfc35c1..46d21eb 100644
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2ScopeService.java
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2ScopeService.java
@@ -1,35 +1,14 @@
package de.ids_mannheim.korap.oauth2.service;
import java.util.Collection;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
import java.util.Set;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import de.ids_mannheim.korap.config.Attributes;
-import de.ids_mannheim.korap.constant.TokenType;
-import de.ids_mannheim.korap.dao.AdminDao;
import de.ids_mannheim.korap.exceptions.KustvaktException;
-import de.ids_mannheim.korap.exceptions.StatusCodes;
-import de.ids_mannheim.korap.oauth2.constant.OAuth2Error;
import de.ids_mannheim.korap.oauth2.constant.OAuth2Scope;
-import de.ids_mannheim.korap.oauth2.dao.AccessScopeDao;
import de.ids_mannheim.korap.oauth2.entity.AccessScope;
import de.ids_mannheim.korap.security.context.TokenContext;
-@Service
-public class OAuth2ScopeService {
-
- @Autowired
- private AccessScopeDao accessScopeDao;
-
- @Autowired
- private AdminDao adminDao;
+public interface OAuth2ScopeService {
/**
* Converts a set of scope strings to a set of {@link AccessScope}
@@ -38,48 +17,12 @@
* @return
* @throws KustvaktException
*/
- public Set<AccessScope> convertToAccessScope (Collection<String> scopes)
- throws KustvaktException {
+ Set<AccessScope> convertToAccessScope (Collection<String> scopes)
+ throws KustvaktException;
- List<AccessScope> definedScopes = accessScopeDao.retrieveAccessScopes();
- Set<AccessScope> requestedScopes =
- new HashSet<AccessScope>(scopes.size());
- int index;
- OAuth2Scope oauth2Scope = null;
- for (String scope : scopes) {
- try{
- oauth2Scope = Enum.valueOf(OAuth2Scope.class, scope.toUpperCase());
- }
- catch (IllegalArgumentException e) {
- throw new KustvaktException(StatusCodes.INVALID_SCOPE,
- scope + " is an invalid scope",
- OAuth2Error.INVALID_SCOPE);
- }
-
- index = definedScopes.indexOf(new AccessScope(oauth2Scope));
- if (index == -1) {
- throw new KustvaktException(StatusCodes.INVALID_SCOPE,
- scope + " is an invalid scope",
- OAuth2Error.INVALID_SCOPE);
- }
- else {
- requestedScopes.add(definedScopes.get(index));
- }
- }
- return requestedScopes;
- }
+ String convertAccessScopesToString (Set<AccessScope> scopes);
- public String convertAccessScopesToString (Set<AccessScope> scopes) {
- Set<String> set = convertAccessScopesToStringSet(scopes);
- return String.join(" ", set);
- }
-
- public Set<String> convertAccessScopesToStringSet (
- Set<AccessScope> scopes) {
- Set<String> set = scopes.stream().map(scope -> scope.toString())
- .collect(Collectors.toSet());
- return set;
- }
+ Set<String> convertAccessScopesToStringSet (Set<AccessScope> scopes);
/**
* Simple reduction of requested scopes, i.e. excluding any scopes
@@ -89,28 +32,10 @@
* @param defaultScopes
* @return accepted scopes
*/
- public Set<String> filterScopes (Set<String> scopes,
- Set<String> defaultScopes) {
- Stream<String> stream = scopes.stream();
- Set<String> filteredScopes =
- stream.filter(scope -> defaultScopes.contains(scope))
- .collect(Collectors.toSet());
- return filteredScopes;
- }
+ Set<String> filterScopes (Set<String> scopes, Set<String> defaultScopes);
- public void verifyScope (TokenContext context, OAuth2Scope requiredScope)
- throws KustvaktException {
- if (!adminDao.isAdmin(context.getUsername())
- && context.getTokenType().equals(TokenType.BEARER)) {
- Map<String, Object> parameters = context.getParameters();
- String authorizedScope = (String) parameters.get(Attributes.SCOPE);
- if (!authorizedScope.contains(OAuth2Scope.ALL.toString())
- && !authorizedScope.contains(requiredScope.toString())) {
- throw new KustvaktException(StatusCodes.AUTHORIZATION_FAILED,
- "Scope " + requiredScope + " is not authorized");
- }
- }
- }
+ void verifyScope (TokenContext context, OAuth2Scope requiredScope)
+ throws KustvaktException;
/**
* Verify scopes given in a refresh request. The scopes must not
@@ -124,16 +49,7 @@
* @return a set of requested {@link AccessScope}
* @throws KustvaktException
*/
- public Set<AccessScope> verifyRefreshScope (Set<String> requestScopes,
- Set<AccessScope> originalScopes) throws KustvaktException {
- Set<AccessScope> requestedScopes = convertToAccessScope(requestScopes);
- for (AccessScope scope : requestedScopes) {
- if (!originalScopes.contains(scope)) {
- throw new KustvaktException(StatusCodes.INVALID_SCOPE,
- "Scope " + scope.getId() + " is not authorized.",
- OAuth2Error.INVALID_SCOPE);
- }
- }
- return requestedScopes;
- }
-}
+ Set<AccessScope> verifyRefreshScope (Set<String> requestScopes,
+ Set<AccessScope> originalScopes) throws KustvaktException;
+
+}
\ No newline at end of file
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2ScopeServiceImpl.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2ScopeServiceImpl.java
new file mode 100644
index 0000000..387bf6d
--- /dev/null
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2ScopeServiceImpl.java
@@ -0,0 +1,134 @@
+package de.ids_mannheim.korap.oauth2.service;
+
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+import org.springframework.beans.factory.annotation.Autowired;
+
+import de.ids_mannheim.korap.config.Attributes;
+import de.ids_mannheim.korap.constant.TokenType;
+import de.ids_mannheim.korap.dao.AdminDao;
+import de.ids_mannheim.korap.exceptions.KustvaktException;
+import de.ids_mannheim.korap.exceptions.StatusCodes;
+import de.ids_mannheim.korap.oauth2.constant.OAuth2Error;
+import de.ids_mannheim.korap.oauth2.constant.OAuth2Scope;
+import de.ids_mannheim.korap.oauth2.dao.AccessScopeDao;
+import de.ids_mannheim.korap.oauth2.entity.AccessScope;
+import de.ids_mannheim.korap.security.context.TokenContext;
+
+public class OAuth2ScopeServiceImpl implements OAuth2ScopeService {
+
+ @Autowired
+ private AccessScopeDao accessScopeDao;
+
+ @Autowired
+ private AdminDao adminDao;
+
+ /* (non-Javadoc)
+ * @see de.ids_mannheim.korap.oauth2.service.OAuth2ScopeService#convertToAccessScope(java.util.Collection)
+ */
+ @Override
+ public Set<AccessScope> convertToAccessScope (Collection<String> scopes)
+ throws KustvaktException {
+
+ List<AccessScope> definedScopes = accessScopeDao.retrieveAccessScopes();
+ Set<AccessScope> requestedScopes =
+ new HashSet<AccessScope>(scopes.size());
+ int index;
+ OAuth2Scope oauth2Scope = null;
+ for (String scope : scopes) {
+ try{
+ oauth2Scope = Enum.valueOf(OAuth2Scope.class, scope.toUpperCase());
+ }
+ catch (IllegalArgumentException e) {
+ throw new KustvaktException(StatusCodes.INVALID_SCOPE,
+ scope + " is an invalid scope",
+ OAuth2Error.INVALID_SCOPE);
+ }
+
+ index = definedScopes.indexOf(new AccessScope(oauth2Scope));
+ if (index == -1) {
+ throw new KustvaktException(StatusCodes.INVALID_SCOPE,
+ scope + " is an invalid scope",
+ OAuth2Error.INVALID_SCOPE);
+ }
+ else {
+ requestedScopes.add(definedScopes.get(index));
+ }
+ }
+ return requestedScopes;
+ }
+
+ /* (non-Javadoc)
+ * @see de.ids_mannheim.korap.oauth2.service.OAuth2ScopeService#convertAccessScopesToString(java.util.Set)
+ */
+ @Override
+ public String convertAccessScopesToString (Set<AccessScope> scopes) {
+ Set<String> set = convertAccessScopesToStringSet(scopes);
+ return String.join(" ", set);
+ }
+
+ /* (non-Javadoc)
+ * @see de.ids_mannheim.korap.oauth2.service.OAuth2ScopeService#convertAccessScopesToStringSet(java.util.Set)
+ */
+ @Override
+ public Set<String> convertAccessScopesToStringSet (
+ Set<AccessScope> scopes) {
+ Set<String> set = scopes.stream().map(scope -> scope.toString())
+ .collect(Collectors.toSet());
+ return set;
+ }
+
+ /* (non-Javadoc)
+ * @see de.ids_mannheim.korap.oauth2.service.OAuth2ScopeService#filterScopes(java.util.Set, java.util.Set)
+ */
+ @Override
+ public Set<String> filterScopes (Set<String> scopes,
+ Set<String> defaultScopes) {
+ Stream<String> stream = scopes.stream();
+ Set<String> filteredScopes =
+ stream.filter(scope -> defaultScopes.contains(scope))
+ .collect(Collectors.toSet());
+ return filteredScopes;
+ }
+
+ /* (non-Javadoc)
+ * @see de.ids_mannheim.korap.oauth2.service.OAuth2ScopeService#verifyScope(de.ids_mannheim.korap.security.context.TokenContext, de.ids_mannheim.korap.oauth2.constant.OAuth2Scope)
+ */
+ @Override
+ public void verifyScope (TokenContext context, OAuth2Scope requiredScope)
+ throws KustvaktException {
+ if (!adminDao.isAdmin(context.getUsername())
+ && context.getTokenType().equals(TokenType.BEARER)) {
+ Map<String, Object> parameters = context.getParameters();
+ String authorizedScope = (String) parameters.get(Attributes.SCOPE);
+ if (!authorizedScope.contains(OAuth2Scope.ALL.toString())
+ && !authorizedScope.contains(requiredScope.toString())) {
+ throw new KustvaktException(StatusCodes.AUTHORIZATION_FAILED,
+ "Scope " + requiredScope + " is not authorized");
+ }
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see de.ids_mannheim.korap.oauth2.service.OAuth2ScopeService#verifyRefreshScope(java.util.Set, java.util.Set)
+ */
+ @Override
+ public Set<AccessScope> verifyRefreshScope (Set<String> requestScopes,
+ Set<AccessScope> originalScopes) throws KustvaktException {
+ Set<AccessScope> requestedScopes = convertToAccessScope(requestScopes);
+ for (AccessScope scope : requestedScopes) {
+ if (!originalScopes.contains(scope)) {
+ throw new KustvaktException(StatusCodes.INVALID_SCOPE,
+ "Scope " + scope.getId() + " is not authorized.",
+ OAuth2Error.INVALID_SCOPE);
+ }
+ }
+ return requestedScopes;
+ }
+}
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2TokenService.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2TokenService.java
index 0300ee0..c18e96f 100644
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2TokenService.java
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2TokenService.java
@@ -10,11 +10,11 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import de.ids_mannheim.korap.authentication.AuthenticationManager;
import de.ids_mannheim.korap.config.Attributes;
import de.ids_mannheim.korap.config.FullConfiguration;
import de.ids_mannheim.korap.exceptions.KustvaktException;
import de.ids_mannheim.korap.exceptions.StatusCodes;
-import de.ids_mannheim.korap.interfaces.AuthenticationManagerIface;
import de.ids_mannheim.korap.oauth2.constant.OAuth2Error;
import de.ids_mannheim.korap.oauth2.entity.Authorization;
@@ -40,7 +40,7 @@
@Autowired
protected FullConfiguration config;
@Autowired
- private AuthenticationManagerIface authenticationManager;
+ private AuthenticationManager authenticationManager;
/**
* RFC 6749:
diff --git a/full/src/main/java/de/ids_mannheim/korap/rewrite/FullRewriteHandler.java b/full/src/main/java/de/ids_mannheim/korap/rewrite/FullRewriteHandler.java
index 21bcc41..b18ce0c 100644
--- a/full/src/main/java/de/ids_mannheim/korap/rewrite/FullRewriteHandler.java
+++ b/full/src/main/java/de/ids_mannheim/korap/rewrite/FullRewriteHandler.java
@@ -1,7 +1,6 @@
package de.ids_mannheim.korap.rewrite;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
import de.ids_mannheim.korap.config.FullConfiguration;
import de.ids_mannheim.korap.resource.rewrite.CollectionCleanRewrite;
@@ -25,6 +24,7 @@
}
public void defaultRewriteConstraints () {
+ super.defaultRewriteConstraints();
this.addProcessor(vcRewrite);
this.add(CollectionRewrite.class);
// this.add(IdWriter.class);
diff --git a/full/src/main/java/de/ids_mannheim/korap/server/KustvaktLiteServer.java b/full/src/main/java/de/ids_mannheim/korap/server/KustvaktLiteServer.java
new file mode 100644
index 0000000..448d4f6
--- /dev/null
+++ b/full/src/main/java/de/ids_mannheim/korap/server/KustvaktLiteServer.java
@@ -0,0 +1,42 @@
+package de.ids_mannheim.korap.server;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.util.Properties;
+
+import de.ids_mannheim.korap.config.KustvaktConfiguration;
+import de.ids_mannheim.korap.web.KustvaktBaseServer;
+
+public class KustvaktLiteServer extends KustvaktBaseServer {
+
+ public static void main (String[] args) throws Exception {
+ KustvaktLiteServer server = new KustvaktLiteServer();
+ kargs = server.readAttributes(args);
+
+ if (kargs == null) System.exit(0);
+
+ File f = new File("kustvakt-lite.conf");
+ Properties properties = new Properties();
+ InputStream in = null;
+
+ if (!f.exists()) {
+ in = KustvaktLiteServer.class.getClassLoader()
+ .getResourceAsStream("kustvakt-lite.conf");
+ }
+ else {
+ in = new FileInputStream(f);
+ }
+
+ properties.load(in);
+ in.close();
+ config = new KustvaktConfiguration(properties);
+
+ kargs.setSpringConfig("lite-config.xml");
+ rootPackages =
+ "de.ids_mannheim.korap.web";
+
+ server.start();
+ }
+
+}
diff --git a/full/src/main/java/de/ids_mannheim/korap/service/MailService.java b/full/src/main/java/de/ids_mannheim/korap/service/MailService.java
index 7ad24dd..13a6969 100644
--- a/full/src/main/java/de/ids_mannheim/korap/service/MailService.java
+++ b/full/src/main/java/de/ids_mannheim/korap/service/MailService.java
@@ -17,16 +17,15 @@
import org.springframework.mail.javamail.MimeMessagePreparator;
import org.springframework.stereotype.Service;
+import de.ids_mannheim.korap.authentication.AuthenticationManager;
import de.ids_mannheim.korap.config.FullConfiguration;
import de.ids_mannheim.korap.exceptions.KustvaktException;
-import de.ids_mannheim.korap.interfaces.AuthenticationManagerIface;
import de.ids_mannheim.korap.user.User;
import de.ids_mannheim.korap.utils.ParameterChecker;
/**
* Manages mail related services, such as sending group member
- * invitations
- * per email.
+ * invitations per email.
*
* @author margaretha
*
@@ -37,7 +36,7 @@
private static Logger jlog = LogManager.getLogger(MailService.class);
@Autowired
- private AuthenticationManagerIface authManager;
+ private AuthenticationManager authenticationManager;
@Autowired
private JavaMailSender mailSender;
@Autowired
@@ -56,7 +55,7 @@
public void prepare (MimeMessage mimeMessage) throws Exception {
- User invitee = authManager.getUser(inviteeName,
+ User invitee = authenticationManager.getUser(inviteeName,
config.getEmailAddressRetrieval());
MimeMessageHelper message = new MimeMessageHelper(mimeMessage);
diff --git a/full/src/main/java/de/ids_mannheim/korap/service/SearchService.java b/full/src/main/java/de/ids_mannheim/korap/service/SearchService.java
index e1c8ae8..6e7c17e 100644
--- a/full/src/main/java/de/ids_mannheim/korap/service/SearchService.java
+++ b/full/src/main/java/de/ids_mannheim/korap/service/SearchService.java
@@ -16,14 +16,13 @@
import com.sun.jersey.core.util.MultivaluedMapImpl;
-import de.ids_mannheim.korap.config.FullConfiguration;
+import de.ids_mannheim.korap.authentication.AuthenticationManager;
import de.ids_mannheim.korap.config.KustvaktConfiguration;
import de.ids_mannheim.korap.exceptions.KustvaktException;
import de.ids_mannheim.korap.exceptions.StatusCodes;
-import de.ids_mannheim.korap.interfaces.AuthenticationManagerIface;
import de.ids_mannheim.korap.query.serialize.MetaQueryBuilder;
import de.ids_mannheim.korap.query.serialize.QuerySerializer;
-import de.ids_mannheim.korap.rewrite.FullRewriteHandler;
+import de.ids_mannheim.korap.resource.rewrite.RewriteHandler;
import de.ids_mannheim.korap.user.User;
import de.ids_mannheim.korap.user.User.CorpusAccess;
import de.ids_mannheim.korap.web.ClientsHandler;
@@ -35,13 +34,13 @@
private static Logger jlog = LogManager.getLogger(SearchService.class);
@Autowired
- private FullConfiguration config;
+ private KustvaktConfiguration config;
@Autowired
- private AuthenticationManagerIface authManager;
+ private AuthenticationManager authenticationManager;
@Autowired
- private FullRewriteHandler rewriteHandler;
+ private RewriteHandler rewriteHandler;
@Autowired
private SearchKrill searchKrill;
@@ -59,7 +58,7 @@
@SuppressWarnings("unchecked")
public String serializeQuery (String q, String ql, String v, String cq,
Integer pageIndex, Integer startPage, Integer pageLength,
- String context, Boolean cutoff) {
+ String context, Boolean cutoff) throws KustvaktException {
QuerySerializer ss = new QuerySerializer().setQuery(q, ql, v);
if (cq != null) ss.setCollection(cq);
@@ -72,15 +71,22 @@
meta.addEntry("cutOff", cutoff);
ss.setMeta(meta.raw());
- return ss.toJSON();
+ // return ss.toJSON();
+
+ String query = ss.toJSON();
+ query = rewriteHandler.processQuery(ss.toJSON(), null);
+ return query;
}
private User createUser (String username, HttpHeaders headers)
throws KustvaktException {
- User user = authManager.getUser(username);
- authManager.setAccessAndLocation(user, headers);
- jlog.debug("Debug: /getMatchInfo/: location=" + user.locationtoString()
- + ", access=" + user.accesstoString());
+ User user = authenticationManager.getUser(username);
+ authenticationManager.setAccessAndLocation(user, headers);
+ if (user != null) {
+ jlog.debug(
+ "Debug: /getMatchInfo/: location=" + user.locationtoString()
+ + ", access=" + user.accesstoString());
+ }
return user;
}
@@ -94,9 +100,9 @@
@SuppressWarnings("unchecked")
public String search (String engine, String username, HttpHeaders headers,
- String q, String ql, String v, String cq, Integer pageIndex,
- Integer pageInteger, String ctx, Integer pageLength, Boolean cutoff)
- throws KustvaktException {
+ String q, String ql, String v, String cq, Set<String> fields,
+ Integer pageIndex, Integer pageInteger, String ctx,
+ Integer pageLength, Boolean cutoff) throws KustvaktException {
KustvaktConfiguration.BACKENDS eng = this.config.chooseBackend(engine);
User user = createUser(username, headers);
@@ -107,6 +113,8 @@
MetaQueryBuilder meta = createMetaQuery(pageIndex, pageInteger, ctx,
pageLength, cutoff);
+ if (fields != null && !fields.isEmpty())
+ meta.addEntry("fields", fields);
serializer.setMeta(meta.raw());
// There is an error in query processing
@@ -115,7 +123,8 @@
throw new KustvaktException(serializer.toJSON());
}
- String query = this.rewriteHandler.processQuery(serializer.toJSON(), user);
+ String query =
+ this.rewriteHandler.processQuery(serializer.toJSON(), user);
jlog.info("the serialized query " + query);
String result;
@@ -125,7 +134,7 @@
else {
result = searchKrill.search(query);
}
-// jlog.debug("Query result: " + result);
+ // jlog.debug("Query result: " + result);
return result;
}
@@ -167,25 +176,26 @@
public String retrieveMatchInfo (String corpusId, String docId,
String textId, String matchId, Set<String> foundries,
String username, HttpHeaders headers, Set<String> layers,
- boolean spans) throws KustvaktException {
+ boolean spans, boolean highlights) throws KustvaktException {
String matchid =
searchKrill.getMatchId(corpusId, docId, textId, matchId);
User user = createUser(username, headers);
- CorpusAccess corpusAccess = user.getCorpusAccess();
- Pattern p;
- switch (corpusAccess) {
- case PUB:
- p = config.getPublicLicensePattern();
- break;
- case ALL:
- p = config.getAllLicensePattern();
- break;
- default: // FREE
- p = config.getFreeLicensePattern();
- break;
+ Pattern p = null;
+ if (user != null) {
+ CorpusAccess corpusAccess = user.getCorpusAccess();
+ switch (corpusAccess) {
+ case PUB:
+ p = config.getPublicLicensePattern();
+ break;
+ case ALL:
+ p = config.getAllLicensePattern();
+ break;
+ default: // FREE
+ p = config.getFreeLicensePattern();
+ break;
+ }
}
-
boolean match_only = foundries == null || foundries.isEmpty();
String results;
try {
@@ -206,7 +216,7 @@
}
results = searchKrill.getMatch(matchid, foundryList, layerList,
- spans, false, true, p);
+ spans, highlights, true, p);
}
else {
results = searchKrill.getMatch(matchid, p);
@@ -226,7 +236,7 @@
String textSigle = searchKrill.getTextSigle(corpusId, docId, textId);
return searchKrill.getFields(textSigle);
}
-
+
public String getCollocationBase (String query) throws KustvaktException {
return graphDBhandler.getResponse("distCollo", "q", query);
}
diff --git a/full/src/main/java/de/ids_mannheim/korap/web/controller/AuthenticationController.java b/full/src/main/java/de/ids_mannheim/korap/web/controller/AuthenticationController.java
index 304cb6a..ed0d30d 100644
--- a/full/src/main/java/de/ids_mannheim/korap/web/controller/AuthenticationController.java
+++ b/full/src/main/java/de/ids_mannheim/korap/web/controller/AuthenticationController.java
@@ -29,6 +29,7 @@
import com.sun.jersey.spi.container.ContainerRequest;
import com.sun.jersey.spi.container.ResourceFilters;
+import de.ids_mannheim.korap.authentication.AuthenticationManager;
import de.ids_mannheim.korap.authentication.http.AuthorizationData;
import de.ids_mannheim.korap.authentication.http.HttpAuthorizationHandler;
import de.ids_mannheim.korap.config.Attributes;
@@ -38,7 +39,6 @@
import de.ids_mannheim.korap.constant.TokenType;
import de.ids_mannheim.korap.exceptions.KustvaktException;
import de.ids_mannheim.korap.exceptions.StatusCodes;
-import de.ids_mannheim.korap.interfaces.AuthenticationManagerIface;
import de.ids_mannheim.korap.security.context.TokenContext;
import de.ids_mannheim.korap.user.User;
import de.ids_mannheim.korap.utils.JsonUtils;
@@ -83,7 +83,7 @@
LogManager.getLogger(AuthenticationController.class);
@Autowired
- private AuthenticationManagerIface controller;
+ private AuthenticationManager controller;
// private SendMail mail;
diff --git a/full/src/main/java/de/ids_mannheim/korap/web/controller/SearchController.java b/full/src/main/java/de/ids_mannheim/korap/web/controller/SearchController.java
index 41e5e2c..e65ae07 100644
--- a/full/src/main/java/de/ids_mannheim/korap/web/controller/SearchController.java
+++ b/full/src/main/java/de/ids_mannheim/korap/web/controller/SearchController.java
@@ -96,15 +96,14 @@
TokenContext ctx = (TokenContext) securityContext.getUserPrincipal();
try {
scopeService.verifyScope(ctx, OAuth2Scope.SERIALIZE_QUERY);
+ String result = searchService.serializeQuery(q, ql, v, cq,
+ pageIndex, startPage, pageLength, context, cutoff);
+ jlog.debug("Query: " + result);
+ return Response.ok(result).build();
}
catch (KustvaktException e) {
- kustvaktResponseHandler.throwit(e);
+ throw kustvaktResponseHandler.throwit(e);
}
-
- String result = searchService.serializeQuery(q, ql, v, cq, pageIndex,
- startPage, pageLength, context, cutoff);
- jlog.debug("Query: " + result);
- return Response.ok(result).build();
}
@POST
@@ -136,6 +135,7 @@
@QueryParam("count") Integer pageLength,
@QueryParam("offset") Integer pageIndex,
@QueryParam("page") Integer pageInteger,
+ @QueryParam("fields") Set<String> fields,
@QueryParam("cq") String cq, @QueryParam("engine") String engine) {
TokenContext context =
@@ -145,7 +145,7 @@
try {
scopeService.verifyScope(context, OAuth2Scope.SEARCH);
result = searchService.search(engine, context.getUsername(),
- headers, q, ql, v, cq, pageIndex, pageInteger, ctx,
+ headers, q, ql, v, cq, fields, pageIndex, pageInteger, ctx,
pageLength, cutoff);
}
catch (KustvaktException e) {
@@ -165,16 +165,19 @@
@PathParam("matchId") String matchId,
@QueryParam("foundry") Set<String> foundries,
@QueryParam("layer") Set<String> layers,
- @QueryParam("spans") Boolean spans) throws KustvaktException {
+ @QueryParam("spans") Boolean spans,
+ // Highlights may also be a list of valid highlight classes
+ @QueryParam("hls") Boolean highlights) throws KustvaktException {
TokenContext tokenContext = (TokenContext) ctx.getUserPrincipal();
scopeService.verifyScope(tokenContext, OAuth2Scope.MATCH_INFO);
spans = spans != null ? spans : false;
+ highlights = highlights != null ? highlights : false;
if (layers == null || layers.isEmpty()) layers = new HashSet<>();
String results = searchService.retrieveMatchInfo(corpusId, docId,
textId, matchId, foundries, tokenContext.getUsername(), headers,
- layers, spans);
+ layers, spans, highlights);
return Response.ok(results).build();
}
diff --git a/full/src/main/java/de/ids_mannheim/korap/web/controller/UserController.java b/full/src/main/java/de/ids_mannheim/korap/web/controller/UserController.java
index e181b47..f44fb3f 100644
--- a/full/src/main/java/de/ids_mannheim/korap/web/controller/UserController.java
+++ b/full/src/main/java/de/ids_mannheim/korap/web/controller/UserController.java
@@ -36,12 +36,12 @@
import com.sun.jersey.spi.container.ContainerRequest;
import com.sun.jersey.spi.container.ResourceFilters;
+import de.ids_mannheim.korap.authentication.AuthenticationManager;
import de.ids_mannheim.korap.config.Attributes;
import de.ids_mannheim.korap.config.Scopes;
import de.ids_mannheim.korap.config.URIParam;
import de.ids_mannheim.korap.exceptions.KustvaktException;
import de.ids_mannheim.korap.exceptions.StatusCodes;
-import de.ids_mannheim.korap.interfaces.AuthenticationManagerIface;
import de.ids_mannheim.korap.security.context.TokenContext;
import de.ids_mannheim.korap.user.KorAPUser;
import de.ids_mannheim.korap.user.User;
@@ -76,7 +76,7 @@
private static Logger jlog = LogManager.getLogger(UserController.class);
@Autowired
- private AuthenticationManagerIface controller;
+ private AuthenticationManager controller;
private @Context UriInfo info;
diff --git a/full/src/main/java/de/ids_mannheim/korap/web/filter/AdminFilter.java b/full/src/main/java/de/ids_mannheim/korap/web/filter/AdminFilter.java
index 7e1a88b..2738a3b 100644
--- a/full/src/main/java/de/ids_mannheim/korap/web/filter/AdminFilter.java
+++ b/full/src/main/java/de/ids_mannheim/korap/web/filter/AdminFilter.java
@@ -8,25 +8,22 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
-import com.sun.jersey.api.client.ClientResponse.Status;
import com.sun.jersey.spi.container.ContainerRequest;
import com.sun.jersey.spi.container.ContainerRequestFilter;
import com.sun.jersey.spi.container.ContainerResponseFilter;
import com.sun.jersey.spi.container.ResourceFilter;
+import de.ids_mannheim.korap.authentication.AuthenticationManager;
import de.ids_mannheim.korap.authentication.http.AuthorizationData;
import de.ids_mannheim.korap.authentication.http.HttpAuthorizationHandler;
-import de.ids_mannheim.korap.authentication.http.TransferEncoding;
import de.ids_mannheim.korap.config.Attributes;
import de.ids_mannheim.korap.constant.AuthenticationMethod;
import de.ids_mannheim.korap.dao.AdminDao;
import de.ids_mannheim.korap.exceptions.KustvaktException;
import de.ids_mannheim.korap.exceptions.StatusCodes;
-import de.ids_mannheim.korap.interfaces.AuthenticationManagerIface;
import de.ids_mannheim.korap.security.context.KustvaktContext;
import de.ids_mannheim.korap.security.context.TokenContext;
import de.ids_mannheim.korap.user.User;
-import de.ids_mannheim.korap.utils.StringUtils;
import de.ids_mannheim.korap.web.KustvaktResponseHandler;
/**
@@ -43,7 +40,7 @@
@Autowired
private AdminDao adminDao;
@Autowired
- private AuthenticationManagerIface authManager;
+ private AuthenticationManager authenticationManager;
@Autowired
private KustvaktResponseHandler kustvaktResponseHandler;
@@ -72,7 +69,7 @@
attributes.put(Attributes.USER_AGENT, agent);
try {
// EM: fix me: AuthenticationType based on header value
- User user = authManager.authenticate(AuthenticationMethod.LDAP,
+ User user = authenticationManager.authenticate(AuthenticationMethod.LDAP,
data.getUsername(), data.getPassword(), attributes);
if (!adminDao.isAdmin(user.getUsername())) {
throw new KustvaktException(StatusCodes.AUTHENTICATION_FAILED,
diff --git a/full/src/main/java/de/ids_mannheim/korap/web/filter/AuthenticationFilter.java b/full/src/main/java/de/ids_mannheim/korap/web/filter/AuthenticationFilter.java
index 57d232d..d0e4562 100644
--- a/full/src/main/java/de/ids_mannheim/korap/web/filter/AuthenticationFilter.java
+++ b/full/src/main/java/de/ids_mannheim/korap/web/filter/AuthenticationFilter.java
@@ -10,12 +10,12 @@
import com.sun.jersey.spi.container.ContainerResponseFilter;
import com.sun.jersey.spi.container.ResourceFilter;
+import de.ids_mannheim.korap.authentication.AuthenticationManager;
import de.ids_mannheim.korap.authentication.http.AuthorizationData;
import de.ids_mannheim.korap.authentication.http.HttpAuthorizationHandler;
import de.ids_mannheim.korap.constant.TokenType;
import de.ids_mannheim.korap.exceptions.KustvaktException;
import de.ids_mannheim.korap.exceptions.StatusCodes;
-import de.ids_mannheim.korap.interfaces.AuthenticationManagerIface;
import de.ids_mannheim.korap.security.context.KustvaktContext;
import de.ids_mannheim.korap.security.context.TokenContext;
import de.ids_mannheim.korap.utils.TimeUtils;
@@ -35,7 +35,7 @@
private HttpAuthorizationHandler authorizationHandler;
@Autowired
- private AuthenticationManagerIface authenticationManager;
+ private AuthenticationManager authenticationManager;
@Autowired
private KustvaktResponseHandler kustvaktResponseHandler;
diff --git a/full/src/main/java/de/ids_mannheim/korap/web/filter/DemoUserFilter.java b/full/src/main/java/de/ids_mannheim/korap/web/filter/DemoUserFilter.java
index e5e838a..e546c12 100644
--- a/full/src/main/java/de/ids_mannheim/korap/web/filter/DemoUserFilter.java
+++ b/full/src/main/java/de/ids_mannheim/korap/web/filter/DemoUserFilter.java
@@ -1,17 +1,6 @@
package de.ids_mannheim.korap.web.filter;
-import com.sun.jersey.spi.container.ContainerRequest;
-import com.sun.jersey.spi.container.ContainerRequestFilter;
-import com.sun.jersey.spi.container.ContainerResponseFilter;
-import com.sun.jersey.spi.container.ResourceFilter;
-import de.ids_mannheim.korap.config.BeansFactory;
-import de.ids_mannheim.korap.config.KustvaktConfiguration;
-import de.ids_mannheim.korap.constant.TokenType;
-import de.ids_mannheim.korap.security.context.KustvaktContext;
-import de.ids_mannheim.korap.security.context.TokenContext;
-import de.ids_mannheim.korap.user.User;
-import de.ids_mannheim.korap.utils.TimeUtils;
-import de.ids_mannheim.korap.web.CoreResponseHandler;
+import java.security.Principal;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.UriInfo;
@@ -20,11 +9,20 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
-import java.security.Principal;
+import com.sun.jersey.spi.container.ContainerRequest;
+import com.sun.jersey.spi.container.ContainerRequestFilter;
+import com.sun.jersey.spi.container.ContainerResponseFilter;
+import com.sun.jersey.spi.container.ResourceFilter;
+
+import de.ids_mannheim.korap.config.KustvaktConfiguration;
+import de.ids_mannheim.korap.constant.TokenType;
+import de.ids_mannheim.korap.security.context.KustvaktContext;
+import de.ids_mannheim.korap.security.context.TokenContext;
+import de.ids_mannheim.korap.user.User;
+import de.ids_mannheim.korap.utils.TimeUtils;
/**
* Created by hanl on 7/15/14.
- * EM: why would we need this?
*/
@Provider
@Component
diff --git a/full/src/main/java/de/ids_mannheim/korap/web/filter/PiwikFilter.java b/full/src/main/java/de/ids_mannheim/korap/web/filter/PiwikFilter.java
index 4567896..122f717 100644
--- a/full/src/main/java/de/ids_mannheim/korap/web/filter/PiwikFilter.java
+++ b/full/src/main/java/de/ids_mannheim/korap/web/filter/PiwikFilter.java
@@ -28,9 +28,9 @@
import com.sun.jersey.spi.container.ContainerResponseFilter;
import com.sun.jersey.spi.container.ResourceFilter;
+import de.ids_mannheim.korap.authentication.AuthenticationManager;
import de.ids_mannheim.korap.config.Attributes;
import de.ids_mannheim.korap.exceptions.KustvaktException;
-import de.ids_mannheim.korap.interfaces.AuthenticationManagerIface;
import de.ids_mannheim.korap.security.context.TokenContext;
import de.ids_mannheim.korap.user.User;
import de.ids_mannheim.korap.user.UserSettings;
@@ -52,7 +52,7 @@
public static boolean ENABLED = false;
private Map<String, String> customVars;
@Autowired
- private AuthenticationManagerIface controller;
+ private AuthenticationManager authenticationManager;
public PiwikFilter () {
@@ -133,12 +133,14 @@
try {
TokenContext context = (TokenContext) request
.getUserPrincipal();
- // since this is cached, not very expensive!
- User user = controller.getUser(context.getUsername());
- Userdata data = controller
- .getUserData(user, UserSettings.class);
- if ((Boolean) data.get(Attributes.COLLECT_AUDITING_DATA))
- customVars.put("username", context.getUsername());
+ if (context.getUsername() != null){
+ // since this is cached, not very expensive!
+ User user = authenticationManager.getUser(context.getUsername());
+ Userdata data = authenticationManager
+ .getUserData(user, UserSettings.class);
+ if ((Boolean) data.get(Attributes.COLLECT_AUDITING_DATA))
+ customVars.put("username", context.getUsername());
+ }
}
catch (KustvaktException | UnsupportedOperationException e) {
//do nothing