
Built with
LuminusWeb ||

Powered by
Clojure ||
diff --git a/src/clj/youyesyet/routes/home.clj b/src/clj/youyesyet/routes/home.clj
index 251b7fe..9fbd2d2 100644
--- a/src/clj/youyesyet/routes/home.clj
+++ b/src/clj/youyesyet/routes/home.clj
@@ -12,8 +12,7 @@
[youyesyet.db.core :as db-core]
[youyesyet.layout :as layout]
[youyesyet.oauth :as oauth]
- [compojure.core :refer [defroutes GET POST]]
- ))
+ [compojure.core :refer [defroutes GET POST]]))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;
@@ -48,27 +47,30 @@
(if (.exists motd) (slurp motd) "")))
-(defn about-page []
+(defn about-page [request]
(layout/render "md.html" {:title
- (str "About " (:site-title env))
- :content (md-to-html-string (slurp (io/resource "about.md")))}))
+ (str "About " (:site-title env))
+ :servlet-context (:servlet-context request)
+ :content (md-to-html-string (slurp (io/resource "about.md")))}))
(defn call-me-page [request]
(if
- request
+ request
(do
;; do something to store it in the database
(layout/render "call-me-accepted.html" (:session request) (:params request)))
(layout/render "call-me.html" (:session request)
{:title "Please call me!"
+ :servlet-context (:servlet-context request)
;; TODO: Issues need to be fetched from the database
:concerns (db-core/list-issues db-core/*db* {})})))
-(defn home-page []
- (layout/render "home.html" {:title "You yes yet?"
- :motd (md-to-html-string (motd))}))
+(defn home-page [request]
+ (layout/render "home.html" {:title "You yes yet?"
+ :servlet-context (:servlet-context request)
+ :motd (md-to-html-string (motd))}))
(defn login-page
@@ -77,58 +79,62 @@
(let [params (keywordize-keys (:params request))
session (:session request)
username (:username params)
- user (if username (db-core/get-canvasser-by-username db-core/*db* {:username username}))
+ user (when username (db-core/get-canvasser-by-username db-core/*db* {:username username}))
password (:password params)
redirect-to (or
(:redirect-to params)
(str (:servlet-context request) "/roles"))]
(cond
- (:authority params)
- (let [auth (oauth/authority! (:authority params))]
- (if auth
- (do
- (log/info "Attempting to authorise with authority " (:authority params))
- (oauth/fetch-request-token
- (assoc request :session (assoc session :authority auth))
- auth))
- (throw (Exception. (str "No such authority: " (:authority params))))))
+ (:authority params)
+ (let [auth (oauth/authority! (:authority params))]
+ (if auth
+ (do
+ (log/info "Attempting to authorise with authority " (:authority params))
+ (oauth/fetch-request-token
+ (assoc request :session (assoc session :authority auth))
+ auth))
+ (throw (Exception. (str "No such authority: " (:authority params))))))
;; this is obviously, ABSURDLY, insecure. I don't want to put just-about-good-enough,
;; it-will-do-for-now security in place; instead, I want this to be test code only
;; until we have o-auth properly working.
- (and user (= username password))
- (let
+ (and user (= username password))
+ (let
[roles (layout/get-user-roles user)]
- (log/info (str "Logged in user '" username "' with roles " roles))
- (assoc
+ (log/info (str "Logged in user '" username "' with roles " roles))
+ (assoc
(response/found redirect-to)
:session
(assoc session :user (assoc user :roles roles))))
;; if we've got a username but either no user object or else
;; the password doesn't match
- username
+ username
(layout/render
"login.html"
{:title (str "User " username " is unknown")
+ :servlet-context (:servlet-context request)
:redirect-to redirect-to
:warnings ["Your user name was not recognised or your password did not match"]})
;; if we've no username, just invite the user to log in
- :else
+ :else
(layout/render
"login.html"
{:title "Please log in"
+ :servlet-context (:servlet-context request)
:redirect-to redirect-to
:authorities (db-core/list-authorities db-core/*db*)}))))
(defroutes home-routes
- (GET "/" [] (home-page))
- (GET "/home" [] (home-page))
- (GET "/about" [] (about-page))
- (GET "/call-me" [] (call-me-page nil))
+ (GET "/" [request] (home-page request))
+ (GET "/home" [request] (home-page request))
+ (GET "/about" [request] (about-page request))
+ (GET "/call-me" [request] (call-me-page request))
(POST "/call-me" request (call-me-page request))
(GET "/login" request (login-page request))
(POST "/login" request (login-page request))
- (GET "/notyet" [] (layout/render "notyet.html"
- {:title "Can we persuade you?"}))
- (GET "/supporter" [] (layout/render "supporter.html"
- {:title "Have you signed up as a canvasser yet?"})))
+ (GET "/notyet" [request] (layout/render "notyet.html"
+ {:title "Can we persuade you?"
+ :servlet-context (:servlet-context request)}))
+ (GET "/supporter" [request] (layout/render "supporter.html"
+ {:title "Have you signed up as a canvasser yet?"
+ :servlet-context (:servlet-context request)})))
diff --git a/src/clj/youyesyet/routes/roles.clj b/src/clj/youyesyet/routes/roles.clj
index 39a5946..5726b8b 100644
--- a/src/clj/youyesyet/routes/roles.clj
+++ b/src/clj/youyesyet/routes/roles.clj
@@ -15,30 +15,33 @@
[youyesyet.routes.auto :as auto]))
-(defn roles-page [request]
+(defn roles-page
"Render the routing page for the roles the currently logged in user is member of."
+ [request]
(let
- [session (:session request)
- user (-> request :session :user)
- roles (if
- user
- (db-core/list-roles-by-canvasser db-core/*db* {:id (:id user)}))]
+ [session (:session request)
+ user (-> request :session :user)
+ roles (if
+ user
+ (db-core/list-roles-by-canvasser db-core/*db* {:id (:id user)}))]
(log/info (str "Roles routing page; user is " user "; roles are " roles))
(if
- roles
+ roles
(layout/render
- "roles.html"
- {:title (str "Welcome " (:fullname user) ", what do you want to do?")
- :user user
- :roles (map #(assoc % :link (safe-name (:name %) :sql)) roles)})
+ "roles.html"
+ {:title (str "Welcome " (:fullname user) ", what do you want to do?")
+ :servlet-context (:servlet-context request)
+ :user user
+ :roles (map #(assoc % :link (safe-name (:name %) :sql)) roles)})
(assoc (response/found "/login") :session (dissoc session :user)))))
(defn admins-page
[request]
(layout/render
- (support/resolve-template "application-index.html")
- {:title "Administrative menu"}))
+ (support/resolve-template "application-index.html")
+ {:title "Administrative menu"
+ :servlet-context (:servlet-context request)}))
(defn analysts-page
@@ -47,22 +50,23 @@
anything sophisticated here."
[request]
(layout/render
- (support/resolve-template "application-index.html")
- {:title "Administrative menu"}))
+ (support/resolve-template "application-index.html")
+ {:title "Administrative menu"
+ :servlet-context (:servlet-context request)}))
(defn canvassers-page
[request]
(layout/render
"roles/canvasser.html"
- {}))
+ {:servlet-context (:servlet-context request)}))
(defn team-organisers-page
[request]
(layout/render
"roles/team-orgenisers.html"
- {}))
+ {:servlet-context (:servlet-context request)}))
(defroutes roles-routes