Beginnings of a working role-routing page
(also the first actual database reads)
This commit is contained in:
parent
d534302fd8
commit
be324e9d06
4 changed files with 127 additions and 11 deletions
|
|
@ -33,15 +33,34 @@
|
|||
|
||||
;;; This code adapted from http://www.luminusweb.net/docs#accessing_the_database
|
||||
|
||||
(defn canvasser-page
|
||||
(defn post?
|
||||
"Return true if the argument is a ring request which is a post request"
|
||||
[request]
|
||||
(if
|
||||
true)
|
||||
|
||||
(defn canvasser-page
|
||||
"Process this canvasser request, and render the canvasser page"
|
||||
[request]
|
||||
(let [canvasser (if
|
||||
(:params request)
|
||||
(let [params (:params request)]
|
||||
(if (:id params)
|
||||
(db/update-canvasser! params)
|
||||
(db/create-canvasser! params))
|
||||
)))
|
||||
(if (post? request)
|
||||
(db/update-canvasser! params)
|
||||
(db/create-canvasser! params))
|
||||
(db/get-canvasser (:id params)))
|
||||
))]
|
||||
(layout/render
|
||||
"canvasser.html"
|
||||
{:title (if canvasser
|
||||
(str
|
||||
"Edit canvasser "
|
||||
(:fullname canvasser)
|
||||
" "
|
||||
(:email canvasser))
|
||||
"Add new canvasser")
|
||||
:canvasser canvasser
|
||||
:address (if (:address_id canvasser) (db/get-address (:address_id canvasser)))})))
|
||||
|
||||
(defn routing-page
|
||||
"Render the routing page, which offers routes according to the user's roles"
|
||||
|
|
|
|||
|
|
@ -48,28 +48,51 @@
|
|||
;; TODO: Issues need to be fetched from the database
|
||||
:concerns nil})))
|
||||
|
||||
|
||||
(defn roles-page [request]
|
||||
(let
|
||||
[session (:session request)
|
||||
username (:user session)
|
||||
user (if username (db-core/get-canvasser-by-username db-core/*db* {:username username}))
|
||||
roles (if user (db-core/get-roles-by-canvasser db-core/*db* {:canvasser (:id user)}))]
|
||||
(cond
|
||||
roles (layout/render "roles.html"
|
||||
{:title (str "Welcome " (:fullname user))
|
||||
:roles roles})
|
||||
true (assoc (response/found "/login") :session (dissoc session :user))
|
||||
)))
|
||||
|
||||
|
||||
(defn home-page []
|
||||
(layout/render "home.html" {:title "You Yes Yet?"}))
|
||||
|
||||
|
||||
(defn login-page
|
||||
"This is very temporary. We're going to do authentication by oauth."
|
||||
[request]
|
||||
(let [params (keywordize-keys (:form-params request))
|
||||
session (:session request)
|
||||
username (:username params)
|
||||
user (if username (db-core/get-canvasser-by-username db-core/*db* {:username username}))
|
||||
password (:password params)
|
||||
redirect-to (or (:redirect-to params) "app")]
|
||||
(if
|
||||
(and (= username "test") (= password "test"))
|
||||
(do
|
||||
(assoc (response/found redirect-to) :session (assoc session :user username)))
|
||||
(layout/render "login.html" {:title "Please log in" :redirect-to redirect-to}))))
|
||||
redirect-to (or (:redirect-to params) "roles")]
|
||||
(cond
|
||||
;; 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))
|
||||
(assoc (response/found redirect-to) :session (assoc session :user username))
|
||||
user
|
||||
(layout/render "login.html" {:title (str "User " username " is unknown") :redirect-to redirect-to})
|
||||
true
|
||||
(layout/render "login.html" {:title "Please log in" :redirect-to redirect-to}))))
|
||||
|
||||
|
||||
(defroutes home-routes
|
||||
(GET "/" [] (home-page))
|
||||
(GET "/home" [] (home-page))
|
||||
(GET "/about" [] (about-page))
|
||||
(GET "/roles" request (route/restricted (roles-page request)))
|
||||
(GET "/app" [] (route/restricted (app-page)))
|
||||
(GET "/call-me" [] (call-me-page nil))
|
||||
(POST "/call-me" request (call-me-page request))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue