Skip to content

Commit

Permalink
Merge branch 'feature/login-redirect' into develop
Browse files Browse the repository at this point in the history
  • Loading branch information
amalloy committed Apr 24, 2011
2 parents 9aae536 + bfcacb1 commit 6515480
Showing 1 changed file with 13 additions and 7 deletions.
20 changes: 13 additions & 7 deletions src/foreclojure/login.clj
Expand Up @@ -8,10 +8,13 @@
somnium.congomongo)
(:require [sandbar.stateful-session :as session]
[ring.util.response :as response])
(:import org.apache.commons.mail.SimpleEmail))
(:import java.net.URLEncoder
org.apache.commons.mail.SimpleEmail))

(def-page my-login-page []
[:div.error (session/flash-get :error)]
[:div.error
(session/flash-get :error)
(session/flash-get :message)]
(form-to [:post "/login"]
[:table
[:tr
Expand All @@ -24,19 +27,21 @@
[:td]
[:td [:button {:type "submit"} "Log In"]]]
[:tr
[:td ]
[:td]
[:td
[:a {:href "/login/reset"} "Forgot your password?"]]]]))

(defn do-login [user pwd]
(let [user (.toLowerCase user)
{db-pwd :pwd} (from-mongo (fetch-one :users :where {:user user}))]
{db-pwd :pwd} (from-mongo (fetch-one :users :where {:user user}))
location (session/session-get :login-to)]
(if (and db-pwd (.checkPassword (StrongPasswordEncryptor.) pwd db-pwd))
(do (update! :users {:user user}
{:$set {:last-login (java.util.Date.)}}
:upsert false) ; never create new users accidentally
(session/session-put! :user user)
(response/redirect "/problems"))
(session/session-delete-key! :login-to)
(response/redirect (or location "/problems")))
(flash-error "Error logging in." "/login"))))

(def-page update-password-page []
Expand Down Expand Up @@ -64,8 +69,8 @@
(update! :users {:user user}
{:$set {:pwd new-pwd-hash}}
:upsert false)
(html-doc
[:div#update-succeeded "Password for " user " updated successfully"]))
(flash-msg (str "Password for " user " updated successfully")
"/problems"))
(flash-error why "/login/update")))))

(def-page reset-password-page []
Expand Down Expand Up @@ -114,6 +119,7 @@
name " has been reset to " pw ". Make sure to change it"
" soon at https://4clojure.com/login/update - pick"
" something you'll remember!")})
(session/session-put! :login-to "/login/update")
(flash-msg "Your password has been reset! You should receive an email soon"
"/login"))
(flash-error "We don't know anyone with that email address!"
Expand Down

0 comments on commit 6515480

Please sign in to comment.