From d4e18d8f5506c4f4df5a8da54155687280824108 Mon Sep 17 00:00:00 2001 From: Tim Chamberlain Date: Mon, 14 Aug 2023 19:37:00 -0500 Subject: [PATCH] CE-608: updated check for jsonObject when processing API GET request to consider the object being jsonObject.isNull(), added ability to use CUSTOM authorization in an API util override --- .../module/api/actions/BaseAPIActionUtil.java | 18 +++++++++++++++++- .../module/api/model/AuthorizationType.java | 1 + 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/qqq-backend-module-api/src/main/java/com/kingsrook/qqq/backend/module/api/actions/BaseAPIActionUtil.java b/qqq-backend-module-api/src/main/java/com/kingsrook/qqq/backend/module/api/actions/BaseAPIActionUtil.java index cc5d35fb..7dd9f6ca 100644 --- a/qqq-backend-module-api/src/main/java/com/kingsrook/qqq/backend/module/api/actions/BaseAPIActionUtil.java +++ b/qqq-backend-module-api/src/main/java/com/kingsrook/qqq/backend/module/api/actions/BaseAPIActionUtil.java @@ -519,7 +519,7 @@ public class BaseAPIActionUtil { String wrapperObjectName = getBackendDetails(table).getTableWrapperObjectName(); jsonObject = JsonUtils.toJSONObject(resultString); - if(jsonObject.has(wrapperObjectName)) + if(jsonObject.has(wrapperObjectName) && !jsonObject.isNull(wrapperObjectName)) { Object o = jsonObject.get(wrapperObjectName); if(o instanceof JSONArray jsonArray) @@ -750,6 +750,10 @@ public class BaseAPIActionUtil throw (new QException("Error setting authorization query parameter", e)); } } + case CUSTOM -> + { + handleCustomAuthorization(request); + } default -> throw new IllegalArgumentException("Unexpected authorization type: " + backendMetaData.getAuthorizationType()); } } @@ -1398,4 +1402,16 @@ public class BaseAPIActionUtil /////////////////////////////////////////////////////////////////////////////////////////////////// return (7 * 1024); } + + + + /******************************************************************************* + ** + *******************************************************************************/ + protected void handleCustomAuthorization(HttpRequestBase request) throws QException + { + /////////////////////////////////////////////////////////////////////// + // nothing to do at this layer, meant to be overridden by subclasses // + /////////////////////////////////////////////////////////////////////// + } } diff --git a/qqq-backend-module-api/src/main/java/com/kingsrook/qqq/backend/module/api/model/AuthorizationType.java b/qqq-backend-module-api/src/main/java/com/kingsrook/qqq/backend/module/api/model/AuthorizationType.java index 7e8060f3..9a4f750c 100644 --- a/qqq-backend-module-api/src/main/java/com/kingsrook/qqq/backend/module/api/model/AuthorizationType.java +++ b/qqq-backend-module-api/src/main/java/com/kingsrook/qqq/backend/module/api/model/AuthorizationType.java @@ -31,6 +31,7 @@ public enum AuthorizationType API_TOKEN, BASIC_AUTH_API_KEY, BASIC_AUTH_USERNAME_PASSWORD, + CUSTOM, OAUTH2, API_KEY_QUERY_PARAM, }