Logs the user out after 2 days of inactivity.
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user