Introduce filter_by and deprecate authorized_only (close #579)
in the OAuth2ClientList web-service.
Also cleaned up dory access and refresh tokens for confidentialClientId
(see OAuth2TestBase)
Change-Id: I47e2416c0a6ce9fc3f500f5f30e3ca021f984142
diff --git a/src/main/java/de/ids_mannheim/korap/oauth2/dto/OAuth2ClientInfoDto.java b/src/main/java/de/ids_mannheim/korap/oauth2/dto/OAuth2ClientInfoDto.java
index 6f45900..6f7ab07 100644
--- a/src/main/java/de/ids_mannheim/korap/oauth2/dto/OAuth2ClientInfoDto.java
+++ b/src/main/java/de/ids_mannheim/korap/oauth2/dto/OAuth2ClientInfoDto.java
@@ -19,7 +19,7 @@
*
*/
@JsonInclude(Include.NON_EMPTY)
-public class OAuth2ClientInfoDto {
+public class OAuth2ClientInfoDto implements Comparable<OAuth2ClientInfoDto>{
@JsonProperty("super")
private boolean isSuper;
@@ -84,6 +84,12 @@
}
}
}
+
+ @Override
+ public int compareTo (OAuth2ClientInfoDto o) {
+ return this.getClientName().compareTo(o.getClientName());
+ }
+
public boolean isSuper () {
return isSuper;
diff --git a/src/main/java/de/ids_mannheim/korap/web/controller/OAuthClientController.java b/src/main/java/de/ids_mannheim/korap/web/controller/OAuthClientController.java
index ee2d72f..1c41998 100644
--- a/src/main/java/de/ids_mannheim/korap/web/controller/OAuthClientController.java
+++ b/src/main/java/de/ids_mannheim/korap/web/controller/OAuthClientController.java
@@ -7,6 +7,7 @@
import de.ids_mannheim.korap.constant.OAuth2Scope;
import de.ids_mannheim.korap.exceptions.KustvaktException;
+import de.ids_mannheim.korap.exceptions.StatusCodes;
import de.ids_mannheim.korap.oauth2.dto.OAuth2ClientDto;
import de.ids_mannheim.korap.oauth2.dto.OAuth2ClientInfoDto;
import de.ids_mannheim.korap.oauth2.service.OAuth2ClientService;
@@ -16,7 +17,6 @@
import de.ids_mannheim.korap.web.filter.APIVersionFilter;
import de.ids_mannheim.korap.web.filter.AuthenticationFilter;
import de.ids_mannheim.korap.web.filter.BlockingFilter;
-import de.ids_mannheim.korap.web.filter.DemoFilter;
import de.ids_mannheim.korap.web.filter.DemoUserFilter;
import de.ids_mannheim.korap.web.input.OAuth2ClientJson;
import de.ids_mannheim.korap.web.utils.ResourceFilters;
@@ -220,7 +220,8 @@
@Context SecurityContext context,
@FormParam("super_client_id") String superClientId,
@FormParam("super_client_secret") String superClientSecret,
- @FormParam("authorized_only") boolean authorizedOnly) {
+ @FormParam("authorized_only") boolean authorizedOnly, // deprecated
+ @FormParam("filter_by") String filterBy) {
TokenContext tokenContext = (TokenContext) context.getUserPrincipal();
String username = tokenContext.getUsername();
@@ -230,12 +231,34 @@
OAuth2Scope.LIST_USER_CLIENT);
clientService.verifySuperClient(superClientId, superClientSecret);
+
+ List<OAuth2ClientInfoDto> clients = null;
+
if (authorizedOnly) {
- return clientService.listUserAuthorizedClients(username);
+ clients = clientService.listUserAuthorizedClients(username);
}
else {
- return clientService.listUserRegisteredClients(username);
+ if (filterBy !=null && !filterBy.isEmpty()) {
+ if (filterBy.equals("authorized_only")) {
+ clients = clientService.listUserAuthorizedClients(username);
+ }
+ else if (filterBy.equals("owned_only")) {
+ clients = clientService.listUserRegisteredClients(username);
+ }
+ else {
+ throw new KustvaktException(
+ StatusCodes.UNSUPPORTED_VALUE, "filter_by");
+ }
+ }
+ else {
+// clients = clientService.listUserAuthorizedClients(username);
+// clients.addAll(clientService.listUserRegisteredClients(username));
+
+ clients = clientService.listUserRegisteredClients(username);
+ }
}
+
+ return clients;
}
catch (KustvaktException e) {
throw responseHandler.throwit(e);