From a37d22b0d01feb28f8e4f765888aa2efd0e2cd54 Mon Sep 17 00:00:00 2001 From: Darin Kelkhoff Date: Fri, 13 Jan 2023 14:13:21 -0600 Subject: [PATCH] Update export to work off post; add check for Authorization as a form param --- .../javalin/QJavalinImplementation.java | 54 +++++++++++++------ 1 file changed, 37 insertions(+), 17 deletions(-) diff --git a/qqq-middleware-javalin/src/main/java/com/kingsrook/qqq/backend/javalin/QJavalinImplementation.java b/qqq-middleware-javalin/src/main/java/com/kingsrook/qqq/backend/javalin/QJavalinImplementation.java index a0b302d0..0d913249 100644 --- a/qqq-middleware-javalin/src/main/java/com/kingsrook/qqq/backend/javalin/QJavalinImplementation.java +++ b/qqq-middleware-javalin/src/main/java/com/kingsrook/qqq/backend/javalin/QJavalinImplementation.java @@ -292,7 +292,9 @@ public class QJavalinImplementation get("/count", QJavalinImplementation::dataCount); post("/count", QJavalinImplementation::dataCount); get("/export", QJavalinImplementation::dataExportWithoutFilename); + post("/export", QJavalinImplementation::dataExportWithoutFilename); get("/export/{filename}", QJavalinImplementation::dataExportWithFilename); + post("/export/{filename}", QJavalinImplementation::dataExportWithFilename); get("/possibleValues/{fieldName}", QJavalinImplementation::possibleValues); // todo - add put and/or patch at this level (without a primaryKey) to do a bulk update based on primaryKeys in the records. @@ -357,26 +359,19 @@ public class QJavalinImplementation // either with a "Basic " prefix (for a username:password pair) // // or with a "Bearer " prefix (for a token that can be handled the same as a sessionId cookie) // ///////////////////////////////////////////////////////////////////////////////////////////////// - String basicPrefix = "Basic "; - String bearerPrefix = "Bearer "; - if(authorizationHeaderValue.startsWith(basicPrefix)) - { - authorizationHeaderValue = authorizationHeaderValue.replaceFirst(basicPrefix, ""); - authenticationContext.put(BASIC_AUTH_NAME, authorizationHeaderValue); - } - else if(authorizationHeaderValue.startsWith(bearerPrefix)) - { - authorizationHeaderValue = authorizationHeaderValue.replaceFirst(bearerPrefix, ""); - authenticationContext.put(SESSION_ID_COOKIE_NAME, authorizationHeaderValue); - } - else - { - LOG.debug("Authorization header value did not have Basic or Bearer prefix. [" + authorizationHeaderValue + "]"); - } + processAuthorizationValue(authenticationContext, authorizationHeaderValue); } else { - LOG.debug("Neither [" + SESSION_ID_COOKIE_NAME + "] cookie nor [Authorization] header was present in request."); + String authorizationFormValue = context.formParam("Authorization"); + if(StringUtils.hasContent(authorizationFormValue)) + { + processAuthorizationValue(authenticationContext, authorizationFormValue); + } + else + { + LOG.debug("Neither [" + SESSION_ID_COOKIE_NAME + "] cookie nor [Authorization] header was present in request."); + } } QSession session = authenticationModule.createSession(qInstance, authenticationContext); @@ -408,6 +403,31 @@ public class QJavalinImplementation + /******************************************************************************* + ** + *******************************************************************************/ + private static void processAuthorizationValue(Map authenticationContext, String authorizationHeaderValue) + { + String basicPrefix = "Basic "; + String bearerPrefix = "Bearer "; + if(authorizationHeaderValue.startsWith(basicPrefix)) + { + authorizationHeaderValue = authorizationHeaderValue.replaceFirst(basicPrefix, ""); + authenticationContext.put(BASIC_AUTH_NAME, authorizationHeaderValue); + } + else if(authorizationHeaderValue.startsWith(bearerPrefix)) + { + authorizationHeaderValue = authorizationHeaderValue.replaceFirst(bearerPrefix, ""); + authenticationContext.put(SESSION_ID_COOKIE_NAME, authorizationHeaderValue); + } + else + { + LOG.debug("Authorization value did not have Basic or Bearer prefix. [" + authorizationHeaderValue + "]"); + } + } + + + /******************************************************************************* ** *******************************************************************************/