Handled super client id in plugin installation
Change-Id: Ice83e06c0dd8c8742f2fc60eeb765b12777833ed
diff --git a/full/src/main/java/de/ids_mannheim/korap/dto/InstalledPluginDto.java b/full/src/main/java/de/ids_mannheim/korap/dto/InstalledPluginDto.java
index 3cef4c6..1c9943f 100644
--- a/full/src/main/java/de/ids_mannheim/korap/dto/InstalledPluginDto.java
+++ b/full/src/main/java/de/ids_mannheim/korap/dto/InstalledPluginDto.java
@@ -13,7 +13,10 @@
@Getter
@JsonInclude(Include.NON_EMPTY)
public class InstalledPluginDto {
- private String client_id; // oauth2 client id
+ @JsonProperty("client_id")
+ private String clientId; // oauth2 client id
+ @JsonProperty("super_client_id")
+ private String superClientId;
private String name;
private String description;
private String url;
@@ -22,7 +25,8 @@
public InstalledPluginDto (InstalledPlugin plugin) {
OAuth2Client client = plugin.getClient();
- setClient_id(client.getId());
+ setClientId(client.getId());
+ setSuperClientId(plugin.getSuperClient().getId());
setInstalledDate(plugin.getInstalledDate().toString());
setName(client.getName());
setDescription(client.getDescription());
diff --git a/full/src/main/java/de/ids_mannheim/korap/entity/InstalledPlugin.java b/full/src/main/java/de/ids_mannheim/korap/entity/InstalledPlugin.java
index 1aef8b6..b49b1b4 100644
--- a/full/src/main/java/de/ids_mannheim/korap/entity/InstalledPlugin.java
+++ b/full/src/main/java/de/ids_mannheim/korap/entity/InstalledPlugin.java
@@ -33,4 +33,9 @@
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "client_id")
private OAuth2Client client;
+
+ // where a plugin is installed
+ @ManyToOne(fetch = FetchType.LAZY)
+ @JoinColumn(name = "super_client_id")
+ private OAuth2Client superClient;
}
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/InstalledPluginDao.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/InstalledPluginDao.java
index 284c0fd..46ac078 100644
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/InstalledPluginDao.java
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/InstalledPluginDao.java
@@ -31,8 +31,8 @@
@PersistenceContext
private EntityManager entityManager;
- public InstalledPlugin storeUserPlugin (OAuth2Client client,
- String installedBy) throws KustvaktException {
+ public InstalledPlugin storeUserPlugin (OAuth2Client superClient,
+ OAuth2Client client, String installedBy) throws KustvaktException {
ParameterChecker.checkStringValue(installedBy, "installed_by");
InstalledPlugin p = new InstalledPlugin();
@@ -40,12 +40,14 @@
p.setInstalledDate(
ZonedDateTime.now(ZoneId.of(Attributes.DEFAULT_TIME_ZONE)));
p.setClient(client);
+ p.setSuperClient(superClient);
entityManager.persist(p);
return p;
}
- public InstalledPlugin retrieveInstalledPlugin (String clientId,
- String installedBy) throws KustvaktException {
+ public InstalledPlugin retrieveInstalledPlugin (String superClientId,
+ String clientId, String installedBy) throws KustvaktException {
+ ParameterChecker.checkStringValue(superClientId, "super_client_id");
ParameterChecker.checkStringValue(clientId, "client_id");
ParameterChecker.checkStringValue(installedBy, "installedBy");
@@ -56,11 +58,15 @@
Root<InstalledPlugin> root = query.from(InstalledPlugin.class);
Join<InstalledPlugin, OAuth2Client> client =
root.join(InstalledPlugin_.client);
+ Join<InstalledPlugin, OAuth2Client> superClient =
+ root.join(InstalledPlugin_.superClient);
query.select(root);
query.where(builder.and(
builder.equal(root.get(InstalledPlugin_.INSTALLED_BY),
installedBy),
- builder.equal(client.get(OAuth2Client_.id), clientId)));
+ builder.equal(client.get(OAuth2Client_.id), clientId),
+ builder.equal(superClient.get(OAuth2Client_.id),
+ superClientId)));
Query q = entityManager.createQuery(query);
try {
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 9e319f8..078219a 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
@@ -391,8 +391,8 @@
return createClientDtos(plugins);
}
- public InstalledPluginDto installPlugin (String clientId,
- String installedBy) throws KustvaktException {
+ public InstalledPluginDto installPlugin (String superClientId,
+ String clientId, String installedBy) throws KustvaktException {
if (clientId == null || clientId.isEmpty()) {
throw new KustvaktException(StatusCodes.MISSING_PARAMETER,
"Missing parameter: client_id");
@@ -403,21 +403,24 @@
"Plugin is not permitted", clientId);
}
- if (isPluginInstalled(clientId,installedBy)) {
+ if (isPluginInstalled(superClientId,clientId,installedBy)) {
throw new KustvaktException(StatusCodes.PLUGIN_HAS_BEEN_INSTALLED,
"Plugin has been installed", clientId);
}
+ OAuth2Client superClient = clientDao.retrieveClientById(superClientId);
InstalledPlugin plugin =
- pluginDao.storeUserPlugin(client, installedBy);
+ pluginDao.storeUserPlugin(superClient, client, installedBy);
InstalledPluginDto dto = new InstalledPluginDto(plugin);
return dto;
}
- private boolean isPluginInstalled (String clientId, String installedBy) {
+ private boolean isPluginInstalled (String superClientId, String clientId,
+ String installedBy) {
try {
- pluginDao.retrieveInstalledPlugin(clientId, installedBy);
+ pluginDao.retrieveInstalledPlugin(superClientId, clientId,
+ installedBy);
}
catch (KustvaktException e) {
return false;
diff --git a/full/src/main/java/de/ids_mannheim/korap/web/controller/OAuthClientController.java b/full/src/main/java/de/ids_mannheim/korap/web/controller/OAuthClientController.java
index bbd013a..e8f634b 100644
--- a/full/src/main/java/de/ids_mannheim/korap/web/controller/OAuthClientController.java
+++ b/full/src/main/java/de/ids_mannheim/korap/web/controller/OAuthClientController.java
@@ -275,7 +275,7 @@
OAuth2Scope.INSTALL_USER_CLIENT);
clientService.verifySuperClient(superClientId, superClientSecret);
- return clientService.installPlugin(clientId, username);
+ return clientService.installPlugin(superClientId,clientId, username);
}
catch (KustvaktException e) {
throw responseHandler.throwit(e);