Skip to content

Commit

Permalink
Add a middleware for checking if the user is logged in, and redirect
Browse files Browse the repository at this point in the history
to the login page otherwize.
  • Loading branch information
Xylon2 committed May 21, 2022
1 parent cca4749 commit a372efa
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 2 deletions.
10 changes: 9 additions & 1 deletion src/clj/polls/middleware.clj
Expand Up @@ -9,7 +9,8 @@
[polls.config :refer [env]]
[ring.middleware.flash :refer [wrap-flash]]
[immutant.web.middleware :refer [wrap-session]]
[ring.middleware.defaults :refer [site-defaults wrap-defaults]])
[ring.middleware.defaults :refer [site-defaults wrap-defaults]]
[ring.util.http-response :as response])
)

(defn wrap-internal-error [handler]
Expand Down Expand Up @@ -38,6 +39,13 @@
;; since they're not compatible with this middleware
((if (:websocket? request) handler wrapped) request))))

(defn wrap-auth [handler]
(fn [request]
(let [response (handler request)]
(if (contains? (request :session) :user)
response
(response/found (str "/login?redirect=" (request :path-info) "?" (request :query-string)))))))

(defn wrap-base [handler]
(-> ((:middleware defaults) handler)
wrap-flash
Expand Down
3 changes: 2 additions & 1 deletion src/clj/polls/routes/home.clj
Expand Up @@ -35,7 +35,8 @@
(defn home-routes []
[ ""
{:middleware [middleware/wrap-csrf
middleware/wrap-formats]}
middleware/wrap-formats
middleware/wrap-auth]}
["/" {:get home-page}]
["/detail" {:get detail-page :post save-vote}]
["/results" {:get results-page}]
Expand Down

0 comments on commit a372efa

Please sign in to comment.