Added access token scope join table and updated fix for #21.
Change-Id: Ice8941e62f01c1e8472415737632a8ca5cf61129
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/AccessScopeDao.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/AccessScopeDao.java
index 29ab54f..a402c33 100644
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/AccessScopeDao.java
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/AccessScopeDao.java
@@ -40,7 +40,6 @@
if (!existingScopes.contains(newScope)) {
entityManager.persist(newScope);
}
- // else skip
}
}
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/AccessTokenDao.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/AccessTokenDao.java
index 1e3866f..1834c66 100644
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/AccessTokenDao.java
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/AccessTokenDao.java
@@ -20,6 +20,7 @@
AccessToken accessToken = new AccessToken();
accessToken.setAuthorization(authorization);
accessToken.setToken(token);
+ accessToken.setScopes(authorization.getScopes());
entityManager.persist(accessToken);
}
}
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 0486420..f6f505f 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
@@ -7,7 +7,6 @@
import javax.persistence.Query;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Expression;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
@@ -60,7 +59,8 @@
return (Authorization) q.getSingleResult();
}
- public void updateAuthorization (Authorization authorization) {
- entityManager.merge(authorization);
+ public Authorization updateAuthorization (Authorization authorization) {
+ authorization = entityManager.merge(authorization);
+ return authorization;
}
}
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/entity/AccessScope.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/entity/AccessScope.java
index 29c94eb..cca86ac 100644
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/entity/AccessScope.java
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth2/entity/AccessScope.java
@@ -27,7 +27,10 @@
}
@ManyToMany(mappedBy = "scopes", fetch = FetchType.LAZY)
- private List<Authorization> authorizationCodes;
+ private List<Authorization> authorizations;
+
+ @ManyToMany(mappedBy = "scopes", fetch = FetchType.LAZY)
+ private List<AccessToken> accessTokens;
@Override
public String toString () {
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/entity/AccessToken.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/entity/AccessToken.java
index 5d36723..145f798 100644
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/entity/AccessToken.java
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth2/entity/AccessToken.java
@@ -1,6 +1,7 @@
package de.ids_mannheim.korap.oauth2.entity;
import java.time.ZonedDateTime;
+import java.util.Set;
import javax.persistence.Column;
import javax.persistence.Entity;
@@ -9,8 +10,11 @@
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
+import javax.persistence.JoinTable;
+import javax.persistence.ManyToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
+import javax.persistence.UniqueConstraint;
import lombok.Getter;
import lombok.Setter;
@@ -32,8 +36,18 @@
@Column(name = "total_attempts")
private int totalAttempts;
- @OneToOne(fetch=FetchType.EAGER)
+ @OneToOne(fetch=FetchType.LAZY)
@JoinColumn(name="authorization_id")
private Authorization authorization;
+ @ManyToMany(fetch = FetchType.EAGER)
+ @JoinTable(name = "oauth2_access_token_scope",
+ joinColumns = @JoinColumn(name = "token_id",
+ referencedColumnName = "id"),
+ inverseJoinColumns = @JoinColumn(name = "scope_id",
+ referencedColumnName = "id"),
+ uniqueConstraints = @UniqueConstraint(
+ columnNames = { "token_id", "scope_id" }))
+ private Set<AccessScope> scopes;
+
}
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/entity/Authorization.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/entity/Authorization.java
index 4113f48..207512f 100644
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/entity/Authorization.java
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth2/entity/Authorization.java
@@ -33,7 +33,7 @@
private String userId;
@Column(name = "redirect_uri")
private String redirectURI;
- @Column(name = "created_date")
+ @Column(name = "created_date", updatable=false)
private ZonedDateTime createdDate;
@Column(name = "is_revoked")
private boolean isRevoked;
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 8b654a5..5c1d02b 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
@@ -167,7 +167,7 @@
}
- public void verifyAuthorization (String code, String clientId,
+ public Authorization verifyAuthorization (String code, String clientId,
String redirectURI) throws KustvaktException {
Authorization authorization =
authorizationDao.retrieveAuthorizationCode(code, clientId);
@@ -194,7 +194,9 @@
}
authorization.setRevoked(true);
- authorizationDao.updateAuthorization(authorization);
+ authorization = authorizationDao.updateAuthorization(authorization);
+
+ return authorization;
}
public void addTotalAttempts (Authorization authorization) {
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 067ad81..a2d1ba5 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
@@ -96,10 +96,9 @@
throws KustvaktException, OAuthSystemException {
clientService.authenticateClient(clientId, clientSecret);
- authorizationService.verifyAuthorization(authorizationCode, clientId,
- redirectURI);
-
- return createsAccessTokenResponse();
+ Authorization authorization = authorizationService
+ .verifyAuthorization(authorizationCode, clientId, redirectURI);
+ return createsAccessTokenResponse(authorization);
}