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 :refer [wrap-session]]
|
||||||
[ring.middleware.session.cookie :refer [cookie-store]]
|
[ring.middleware.session.cookie :refer [cookie-store]]
|
||||||
[ring.util.response :as response]
|
[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)
|
(when (:aws-access-key-id env)
|
||||||
(defcredential (:aws-access-key-id env) (:aws-secret-access-key env) (:aws-region env)))
|
(defcredential (:aws-access-key-id env) (:aws-secret-access-key env) (:aws-region env)))
|
||||||
@@ -139,6 +141,22 @@
|
|||||||
:exception e)
|
:exception e)
|
||||||
(throw 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]}
|
#_{:clj-kondo/ignore [:clojure-lsp/unused-public-var]}
|
||||||
(def app
|
(def app
|
||||||
(-> route-handler
|
(-> route-handler
|
||||||
@@ -149,6 +167,7 @@
|
|||||||
(session-backend {:authfn (fn [auth]
|
(session-backend {:authfn (fn [auth]
|
||||||
(dissoc auth :exp))}))
|
(dissoc auth :exp))}))
|
||||||
|
|
||||||
|
(wrap-idle-session-timeout)
|
||||||
(wrap-session {:store (cookie-store
|
(wrap-session {:store (cookie-store
|
||||||
{:key
|
{:key
|
||||||
(byte-array
|
(byte-array
|
||||||
|
|||||||
Reference in New Issue
Block a user