forked from cjohansen/auth0-ring
-
Notifications
You must be signed in to change notification settings - Fork 0
/
middleware.clj
28 lines (27 loc) · 1.15 KB
/
middleware.clj
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
(ns auth0-ring.middleware
(:require [auth0-ring.core :refer [delete-cookie]]
[auth0-ring.jwt :refer [verify-token]]
[clojure.data.json :as json]
[clojure.tools.logging :as log]
[clojure.walk :refer [keywordize-keys]]))
(defn wrap-token-verification [handler config]
(fn [req]
(let [id-token (get-in req [:cookies "id-token" :value])
access-token (get-in req [:cookies "access-token" :value])]
(if id-token
(try
(do
(def user (verify-token config id-token))
(if user
(handler (assoc req :user (json/read-str user :key-fn keyword)))
(update-in (handler req) [:cookies] #(merge {"id-token" (delete-cookie req)
"access-token" (delete-cookie req)} %))
)
)
(catch Exception e
(.printStackTrace e)
(update-in (handler req) [:cookies] #(merge {"id-token" (delete-cookie req)
"access-token" (delete-cookie req)} %))
)
)
(handler req)))))