(defproject test "0.1.0-SNAPSHOT" :description "" :url "http://test.ru" :dependencies [[org.clojure/clojure "1.7.0"] [selmer "0.8.2"] [com.taoensso/timbre "4.0.2"] [com.taoensso/tower "3.0.2"] [markdown-clj "0.9.67"] [environ "1.0.0"] [compojure "1.3.4"] [ring/ring-defaults "0.1.5"] [ring/ring-session-timeout "0.1.0"] [metosin/ring-middleware-format "0.6.0"] [metosin/ring-http-response "0.6.2"] [bouncer "0.3.3"] [prone "0.8.2"] [org.clojure/tools.nrepl "0.2.10"] [buddy "0.6.0"] [com.novemberain/monger "2.0.1"] [org.immutant/web "2.0.2"] [clojure.joda-time "0.6.0"]] :min-lein-version "2.0.0" :uberjar-name "test.jar" :jvm-opts ["-server"] ;;enable to start the nREPL server when the application launches ;:env {:repl-port 7001} :main test.core :plugins [[lein-environ "1.0.0"] [lein-ancient "0.6.5"]] :profiles {:uberjar {:omit-source true :env {:production true} :aot :all} :dev {:dependencies [[ring-mock "0.1.5"] [ring/ring-devel "1.3.2"] [pjstadig/humane-test-output "0.7.0"]] :repl-options {:init-ns test.core} :injections [(require 'pjstadig.humane-test-output) (pjstadig.humane-test-output/activate!)] :env {:dev true}}})
(defroutes auth-routes ; (GET "/logout" ; ; request (-> logout-controller)) ; POST (POST "/login" ; [login password] (login-controller login password)) ; ; GET ; ; ; ; (GET "/login" request (view/login-page)))
(defroutes users-routes ; (GET "/profile/:login" ; request :params ; login :login request ; -> ; ; . (-> profile-view-controller-GET)))
(buddy.hashers/encrypt "qwerty")
(defn login-controller " " [request] (let [ ; form {:login (get-in request [:form-params "login"]) :password (get-in request [:form-params "password"])} ; validate (bouncer/validate form valid/login-validator) ; errors (first validate) return-errors (fn [message] (util/return-messages view/login-page :error-message message :data validate))] ; (if-not errors ; (if (true? (db/user-exist? {:login (:login form)})) ; (let [user (db/get-user {:login (:login form)} [:password])] ; (if (hashers/check (:password form) (:password user)) (do ; :visited (db/update-user {:login (:login form)} {:visited (util/date-time)}) ; (util/create-session request (:login form) "/")) ; (return-errors " "))) ; (return-errors " ")) ; (return-errors " "))))
(def rules [{:pattern #"^/user/edit$" :handler authenticated-user} (defn on-error [request response] {:status 403 :headers {"Content-Type" "text/html"} :body (str " " (:uri request) ".<br>" response)}) (defn wrap-restricted [handler] (restrict handler {:handler authenticated? :on-error on-error})) (defn wrap-identity [handler] (fn [request] (binding [*identity* (or (get-in request [:session :identity]) nil)] (handler request)))) (defn wrap-auth [handler] (-> handler wrap-identity (wrap-authentication (session-backend)))) ; middleware base: (defn wrap-base [handler] (-> handler wrap-dev ; (wrap-access-rules {:rules rules :on-error on-error}) ; wrap-auth ; (wrap-idle-session-timeout {:timeout (* 60 30) :timeout-response (redirect "/")}) wrap-formats (wrap-defaults (-> site-defaults (assoc-in [:security :anti-forgery] false) (assoc-in [:session :store] (memory-store session/mem)))) wrap-servlet-context wrap-internal-error wrap-uri))
(defn registration-page " " [] (render "registration.html" {:foo [1 2 3 4 5]})))
<ul> {% for i in foo %} {{i}} {% endfor %} </ul>
(ns test.users.db (:require monger.joda-time [monger.collection :as m] [test.db :refer [db]])) (def collection "users") (defn get-user " " ([query] (m/find-one-as-map db collection query)) ([query fields] (m/find-one-as-map db collection query fields))) ; : ; (get-user {:login "test"} [:first-name :last-name]) ; (get-user {:login "test"})
Source: https://habr.com/ru/post/263115/
All Articles