Skip to content

Commit

Permalink
Added :session-cookie-attrs response key for wrap-session middleware
Browse files Browse the repository at this point in the history
  • Loading branch information
weavejester committed Jun 16, 2010
1 parent 66a383a commit 013b92a
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 7 deletions.
14 changes: 7 additions & 7 deletions ring-core/src/ring/middleware/session.clj
Expand Up @@ -28,12 +28,12 @@
(wrap-session handler {}))
([handler options]
(let [store (options :store (memory-store))
cookie (options :cookie-name "ring-session")
cookie-name (options :cookie-name "ring-session")
session-root (options :root "/")
cookie-attrs (merge (options :cookie-attrs) {:path session-root})]
(wrap-cookies
(fn [request]
(let [sess-key (get-in request [:cookies cookie :value])
(let [sess-key (get-in request [:cookies cookie-name :value])
session ((store :read) sess-key)
request (assoc request :session session)
response (handler request)
Expand All @@ -42,10 +42,10 @@
((store :write) sess-key (response :session))
(if sess-key
((store :delete) sess-key))))
response (dissoc response :session)]
response (dissoc response :session)
cookie {cookie-name (merge cookie-attrs
(response :session-cookie-attrs)
{:value sess-key*})}]
(if (and sess-key* (not= sess-key sess-key*))
(assoc response
:cookies (merge (response :cookies)
{cookie (merge cookie-attrs
{:value sess-key*})}))
(assoc response :cookies (merge (response :cookies) cookie))
response)))))))
10 changes: 10 additions & 0 deletions ring-core/test/ring/middleware/session_test.clj
Expand Up @@ -81,3 +81,13 @@
response (handler {:cookies {}})]
(is (= (get-in response [:headers "Set-Cookie"])
["ring-session=foo%3Abar;Path=/foo"]))))

(deftest session-attrs-can-be-set-per-request
(let [store {:read (constantly {})
:write (constantly "foo:bar")}
handler (constantly {:session {:foo "bar"}
:session-cookie-attrs {:max-age 5}})
handler (wrap-session handler {:store store})
response (handler {:cookies {}})]
(is (= (get-in response [:headers "Set-Cookie"])
["ring-session=foo%3Abar;Max-Age=5;Path=/"]))))

0 comments on commit 013b92a

Please sign in to comment.