Skip to content

Instantly share code, notes, and snippets.

@maacl
Created March 19, 2011 20:33
Show Gist options
  • Save maacl/877783 to your computer and use it in GitHub Desktop.
Save maacl/877783 to your computer and use it in GitHub Desktop.
server.clj
(ns cmc.server
(:use net.cgrand.enlive-html
net.cgrand.moustache
somnium.congomongo
ring.util.response
[ring.middleware params multipart-params file reload session stacktrace]
[clojure.contrib logging]
[cmc templates handlers])
(:require [clojure.contrib.io :as io])
(:import [java.io File]))
; Globals
(declare routes)
(declare run-jetty)
(mongo! :db "mydb"
:host "192.168.1.7")
; Initialization
(def production?
(= "tomcat6" (System/getProperty "user.name")))
(def development?
(not production?))
(eval `(when ~(not (or production? *compile-files*))
(use '~'ring.adapter.jetty)
(doto (Thread. #((ns-resolve '~'ring.adapter.jetty '~'run-jetty) #'routes {:port 8080}))
.start)))
; Middlewares
(defn wrap-if [handler pred middleware & args]
(if pred
(apply middleware handler args)
handler))
;; thanks to lau -> http://www.bestinclass.dk/index.clj/2011/01/building-a-social-media-site.html
(defn wrap-security
[app]
(fn [req]
(let [uri (:uri req)]
(if (or (-> req :session :name seq)
(= uri "/users")
(= uri "/users/")
(= uri "/login"))
(app req)
(redirect "/app/users/?err=Not logged in")))))
; Routes
(def cmc-application
(app
(wrap-session)
(wrap-if development? wrap-reload '[cmc.templates])
(wrap-if development? wrap-stacktrace)
["app" &]
(app
(wrap-if development? wrap-file "resources")
(wrap-security)
(wrap-params)
["logout"] logout
["login"] {:get login-form
:post authenticate-user}
;;operate on collection
["users"] {:get get-all-users
:post create-new-user}
["users" ""] {:get get-all-users
:post create-new-user}
["users" "new"] {:get create-new-user-form}
["users" "new" ""] {:get create-new-user-form}
;;operate on a record
["users" id] {:get #(get-user % id)
:post (dispatch-on-param "_method"
{"update" #(update-user % id)
"delete" #(delete-user % id)})}
["users" id "edit"] {:get #(edit-user-form % id)}
["users" id "edit" ""] {:get #(edit-user-form % id)})))
(def routes
(if development?
cmc-application
(app ["cmc" &]
cmc-application)))
@LauJensen
Copy link

Slet fra linie 54 og ned, indsæt følgende istedet

(def routes
   (app
      (wrap-session)
      (wrap-if development? wrap-reload '[cmc.templates])
  (wrap-if development? wrap-stacktrace) 
  (wrap-if development? wrap-file "resources")
  (wrap-security)
  (wrap-params)
   ["logout"] logout
   ["login"] {:get login-form
              :post authenticate-user}

   ;;operate on collection
   ["users"] {:get get-all-users
              :post create-new-user}

   ["users" ""] {:get get-all-users
                 :post create-new-user}

   ["users" "new"] {:get create-new-user-form}
   ["users" "new" ""] {:get create-new-user-form}

   ;;operate on a record
   ["users" id] {:get #(get-user % id)
                 :post (dispatch-on-param "_method"
                                          {"update" #(update-user % id)
                                           "delete" #(delete-user % id)})}
       ["users" id "edit"] {:get #(edit-user-form % id)}
       ["users" id "edit" ""] {:get #(edit-user-form % id)}))

(ikke testet/parantes afstemt)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment