about summary refs log tree commit diff
path: root/users/grfn/bbbg/src/bbbg/handlers/home.clj
diff options
context:
space:
mode:
Diffstat (limited to 'users/grfn/bbbg/src/bbbg/handlers/home.clj')
-rw-r--r--users/grfn/bbbg/src/bbbg/handlers/home.clj22
1 files changed, 17 insertions, 5 deletions
diff --git a/users/grfn/bbbg/src/bbbg/handlers/home.clj b/users/grfn/bbbg/src/bbbg/handlers/home.clj
index 4b46675e4c..00a96f2d87 100644
--- a/users/grfn/bbbg/src/bbbg/handlers/home.clj
+++ b/users/grfn/bbbg/src/bbbg/handlers/home.clj
@@ -2,10 +2,10 @@
   (:require
    [bbbg.db.user :as db.user]
    [bbbg.discord.auth :as discord.auth]
-   [bbbg.handlers.core :refer [page-response]]
+   [bbbg.handlers.core :refer [page-response authenticated?]]
    [bbbg.user :as user]
    [bbbg.views.flash :as flash]
-   [compojure.core :refer [GET routes]]
+   [compojure.core :refer [GET POST routes]]
    [ring.util.response :refer [redirect]]
    [bbbg.discord :as discord]))
 
@@ -14,7 +14,11 @@
    [:ul
     [:li [:a {:href "/signup-forms"}
           "Event Signup Form"]]
-    (when-not authenticated?
+    (if authenticated?
+      [:li [:form {:method :post
+                   :action "/auth/sign-out"}
+            [:input {:type "submit"
+                     :value "Sign Out"}]]]
       [:li [:a {:href "/auth/discord"}
             "Sign In"]])]])
 
@@ -28,8 +32,16 @@
 (defn home-routes [{:keys [db] :as env}]
   (routes
    (GET "/" request
-     (let [authenticated? (some? (get-in request [:session ::user/id]))]
-       (page-response (home-page {:authenticated? authenticated?}))))
+     (page-response (home-page {:authenticated? (authenticated? request)})))
+
+   (POST "/auth/sign-out" request
+     (if (authenticated? request)
+       (-> (redirect "/")
+           (update :session dissoc ::user/id)
+           (flash/add-flash
+            {:flash/message "Successfully Signed Out"
+             :flash/type :success}))
+       (redirect "/")))
 
    (GET "/auth/success" request
      (let [token (get-in request [:oauth2/access-tokens :discord])]