Files
integreat/src/clj/auto_ap/routes/utils.clj
2023-09-06 13:34:08 -07:00

44 lines
1.5 KiB
Clojure

(ns auto-ap.routes.utils
(:require
[auto-ap.graphql.utils :refer [is-admin?]]
[buddy.auth :refer [authenticated?]]
[auto-ap.logging :as alog]
[cemerick.url :as url]))
(defn wrap-secure [handler]
(fn [request]
#_(println "AUTHENTICATE" (authenticated? request))
(cond (authenticated? request)
(handler request)
(get (:headers request) "hx-request")
{:status 401
:headers {"hx-redirect" (str "/login?"
(url/map->query {"redirect-to" (:uri request)}))}}
:else
{:status 302
:headers {"Location" (str "/login?"
(url/map->query {"redirect-to" (:uri request)}))}})))
(defn wrap-admin [handler]
(fn [request]
#_(println "ADMIN " (is-admin? (:identity request)) (:identity request))
(if (is-admin? (:identity request))
(handler request)
(do
(alog/warn ::unauthenticated)
{:status 302
:headers {"Location" (str "/login?"
(url/map->query {"redirect-to" (:uri request)}))}}))))
(defn wrap-client-redirect-unauthenticated [handler]
(fn [request]
(let [response (handler request)]
#_(println "HEREEEEE" (get response :status))
(if (= 401 (get response :status))
(-> response
(assoc-in [:headers "hx-redirect"] (str "/login?"
(url/map->query {"redirect-to" (:uri request)}))))
response))))