diff options
Diffstat (limited to 'users/grfn/bbbg/src/bbbg/handlers/core.clj')
-rw-r--r-- | users/grfn/bbbg/src/bbbg/handlers/core.clj | 40 |
1 files changed, 32 insertions, 8 deletions
diff --git a/users/grfn/bbbg/src/bbbg/handlers/core.clj b/users/grfn/bbbg/src/bbbg/handlers/core.clj index f93904e4ff32..37561c25e1a3 100644 --- a/users/grfn/bbbg/src/bbbg/handlers/core.clj +++ b/users/grfn/bbbg/src/bbbg/handlers/core.clj @@ -5,6 +5,37 @@ [hiccup.core :refer [html]] [ring.util.response :refer [content-type response]])) +(def ^:dynamic *authenticated?* false) + +(defn authenticated? [request] + (some? (get-in request [:session ::user/id]))) + +(defn wrap-auth-required [handler] + (fn [req] + (when (authenticated? req) + (handler req)))) + +(defn wrap-dynamic-auth [handler] + (fn [req] + (binding [*authenticated?* (authenticated? req)] + (handler req)))) + +(defn global-nav [] + [:nav.global-nav + [:ul + (when *authenticated?* + [:li [:a {:href "/attendees"} + "Attendees"]]) + [:li [:a {:href "/events"} + "Events"]] + (if authenticated? + [:li [:form {:method :post + :action "/auth/sign-out"} + [:input {:type "submit" + :value "Sign Out"}]]] + [:li [:a {:href "/auth/discord"} + "Sign In"]])]]) + (defn render-page [opts & body] (let [[{:keys [title]} body] (if (map? opts) @@ -22,6 +53,7 @@ :href "/main.css"}]] [:body [:div.content + (global-nav) (flash/render-flash) body] [:script {:src "https://cdnjs.cloudflare.com/ajax/libs/tarekraafat-autocomplete.js/10.2.6/autoComplete.js"}] @@ -32,14 +64,6 @@ response (content-type "text/html"))) -(defn authenticated? [request] - (some? (get-in request [:session ::user/id]))) - -(defn wrap-auth-required [handler] - (fn [req] - (when (authenticated? req) - (handler req)))) - (comment (render-page [:h1 "hi"]) |