about summary refs log tree commit diff
path: root/users/grfn/bbbg/src/bbbg/handlers/core.clj
diff options
context:
space:
mode:
Diffstat (limited to 'users/grfn/bbbg/src/bbbg/handlers/core.clj')
-rw-r--r--users/grfn/bbbg/src/bbbg/handlers/core.clj40
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"])