From c13730dca7a54fe008f15e03de49c1a528d41d34 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Fri, 16 Dec 2022 16:58:22 +0100 Subject: [PATCH] :bug: Fix incorrect request flow handling on session middleware an issue introduced in previous commits --- backend/src/app/http/middleware.clj | 13 ++++++------- backend/src/app/http/session.clj | 13 +++++++++---- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/backend/src/app/http/middleware.clj b/backend/src/app/http/middleware.clj index 23e229652..40aee10d2 100644 --- a/backend/src/app/http/middleware.clj +++ b/backend/src/app/http/middleware.clj @@ -78,13 +78,12 @@ (raise cause)))] (fn [request respond raise] - (when-let [request (try - (process-request request) - (catch RuntimeException cause - (handle-error raise (or (.getCause cause) cause))) - (catch Throwable cause - (handle-error raise cause)))] - (handler request respond raise))))) + (let [request (ex/try! (process-request request))] + (if (ex/exception? request) + (if (instance? RuntimeException request) + (handle-error raise (or (ex/cause request) request)) + (handle-error raise request)) + (handler request respond raise)))))) (def parse-request {:name ::parse-request diff --git a/backend/src/app/http/session.clj b/backend/src/app/http/session.clj index bc409de18..5d136ac44 100644 --- a/backend/src/app/http/session.clj +++ b/backend/src/app/http/session.clj @@ -178,10 +178,15 @@ (clear-authenticated-cookie)))))) (def middleware-1 - (letfn [(wrap-handler [manager handler request respond raise] - (when-let [cookie (some->> (cf/get :auth-token-cookie-name default-auth-token-cookie-name) - (yrq/get-cookie request))] - (->> (decode manager (:value cookie)) + (letfn [(decode-cookie [manager cookie] + (if-let [value (:value cookie)] + (decode manager value) + (p/resolved nil))) + + (wrap-handler [manager handler request respond raise] + (let [cookie (some->> (cf/get :auth-token-cookie-name default-auth-token-cookie-name) + (yrq/get-cookie request))] + (->> (decode-cookie manager cookie) (p/fnly (fn [claims _] (cond-> request (some? claims) (assoc :session-token-claims claims)