diff --git a/backend/src/app/loggers/audit.clj b/backend/src/app/loggers/audit.clj index d89809f37..10797f41c 100644 --- a/backend/src/app/loggers/audit.clj +++ b/backend/src/app/loggers/audit.clj @@ -141,6 +141,7 @@ (::rpc/profile-id params) uuid/zero) + session-id (rreq/get-header request "x-external-session-id") props (-> (or (::replace-props resultm) (-> params (merge (::props resultm)) @@ -150,8 +151,10 @@ (clean-props)) token-id (::actoken/id request) - context (d/without-nils - {:access-token-id (some-> token-id str)})] + context (-> (::context resultm) + (assoc :external-session-id session-id) + (assoc :access-token-id (some-> token-id str)) + (d/without-nils))] {::type (or (::type resultm) (::rpc/type cfg)) diff --git a/frontend/src/app/config.cljs b/frontend/src/app/config.cljs index 4cfa49985..54ad1b37a 100644 --- a/frontend/src/app/config.cljs +++ b/frontend/src/app/config.cljs @@ -130,9 +130,16 @@ (def worker-uri (obj/get global "penpotWorkerURI" "/js/worker.js")) -(defn external-feature-flag [flag value] - (when-let [fn (obj/get global "externalFeatureFlag")] - (fn flag value))) +(defn external-feature-flag + [flag value] + (let [f (obj/get global "externalFeatureFlag")] + (when (fn? f) + (f flag value)))) + +(defn external-session-id + [] + (let [f (obj/get global "externalSessionId")] + (when (fn? f) (f)))) ;; --- Helper Functions diff --git a/frontend/src/app/main/data/events.cljs b/frontend/src/app/main/data/events.cljs index ec217339c..1e0cc623f 100644 --- a/frontend/src/app/main/data/events.cljs +++ b/frontend/src/app/main/data/events.cljs @@ -168,7 +168,7 @@ ptk/EffectEvent (effect [_ _ stream] (let [session (atom nil) - stopper (rx/filter (ptk/type? ::initialize) stream) + stopper (rx/filter (ptk/type? ::initialize) stream) buffer (atom #queue []) profile (->> (rx/from-atom storage {:emit-current-value? true}) (rx/map :profile) @@ -213,7 +213,9 @@ (let [session* (or @session (dt/now)) context (-> @context (merge (:context event)) - (assoc :session session*))] + (assoc :session session*) + (assoc :external-session-id (cf/external-session-id)) + (d/without-nils))] (reset! session session*) (-> event (assoc :timestamp (dt/now)) diff --git a/frontend/src/app/main/repo.cljs b/frontend/src/app/main/repo.cljs index ed71b827a..b6ff8dc1e 100644 --- a/frontend/src/app/main/repo.cljs +++ b/frontend/src/app/main/repo.cljs @@ -97,7 +97,8 @@ request {:method method :uri (u/join cf/public-uri "api/rpc/command/" nid) :credentials "include" - :headers {"accept" "application/transit+json,text/event-stream,*/*"} + :headers {"accept" "application/transit+json,text/event-stream,*/*" + "x-external-session-id" (cf/external-session-id)} :body (when (= method :post) (if form-data? (http/form-data params)