Logs the user out after 2 days of inactivity.

This commit is contained in:
2023-01-14 14:05:37 -08:00
parent 9d081acdd3
commit a48d4fd9df

View File

@@ -28,7 +28,9 @@
[ring.middleware.session :refer [wrap-session]]
[ring.middleware.session.cookie :refer [cookie-store]]
[ring.util.response :as response]
[unilog.context :as lc]))
[unilog.context :as lc]
[clj-time.coerce :as coerce]
[clj-time.core :as time]))
(when (:aws-access-key-id env)
(defcredential (:aws-access-key-id env) (:aws-secret-access-key env) (:aws-region env)))
@@ -139,6 +141,22 @@
:exception e)
(throw e))))))))
(defn wrap-idle-session-timeout
[handler ]
(fn [request]
(let [session (:session request {})
end-time (coerce/to-date-time (::idle-timeout session))]
(if (and end-time (time/before? end-time (time/now)))
{:session nil
:status 302
:headers {"Location" "/login"}}
(when-let [response (handler request)]
(let [session (:session response session)]
(if (nil? session)
response
(let [end-time (time/plus (time/now) (time/days 2))]
(assoc response :session (assoc session ::idle-timeout (coerce/to-date end-time)))))))))))
#_{:clj-kondo/ignore [:clojure-lsp/unused-public-var]}
(def app
(-> route-handler
@@ -149,6 +167,7 @@
(session-backend {:authfn (fn [auth]
(dissoc auth :exp))}))
(wrap-idle-session-timeout)
(wrap-session {:store (cookie-store
{:key
(byte-array