Thanks. I just found out that my middlewares work, I just had to reorder them like this:
(def app (-> (handler/api app-routes) (friend/authenticate {:credential-fn (partial creds/bcrypt-credential-fn users) :login-url "/login" :workflows [ (ajax-login) ]}) (format/wrap-restful-format) (middleware/wrap-json-body) (middleware/wrap-json-params) (middleware/wrap-json-response) ) ) Now I don't need slurp... still had to change this line in ajax-login, since the format using these middlewares is a bit different: (if-let [{:keys [username password] :as creds} (get-in request [:params :json-params])] with: (if-let [{:keys [username password] :as creds} (clojure.walk/keywordize-keys(:json-params request))] Am Dienstag, 6. Mai 2014 08:03:47 UTC+2 schrieb Erik Bakstad: > > We're using a custom jsonparam-extractor middleware that basically does > this: > > (update-in req [:params] assoc :json-params (read-json (slurp (:body req)) > true)) > > I should probably have clarified this, sorry. > > Also, we're not using interactive-form so I haven't tested if the two > workflows work together. It shouldn't be a problem to make them work > together though. > > kl. 02:31:30 UTC+2 tirsdag 6. mai 2014 skrev Ivan Schuetz følgende: >> >> Sorry. I mean accepts the request map as an argument. This map doesn't >> contain the parameters. >> >> >> Am Dienstag, 6. Mai 2014 02:17:52 UTC+2 schrieb Ivan Schuetz: >>> >>> The snippet provided by Eric doesn't use the body... it returns a >>> function that accepts params as argument, but they were not being passed... >>> body was set instead, that's why I added slurp. >>> >>> So maybe there's something wrong with the >>> (middleware/wrap-json-params), because it's evidently not having effect. >>> >>> >>> Am Dienstag, 6. Mai 2014 01:18:54 UTC+2 schrieb Sam Ritchie: >>>> >>>> (middleware/wrap-json-params) slurps the body up completely - this >>>> is a mutation, so you won't be able to access the body again. >>>> >>>> Ivan Schuetz >>>> May 5, 2014 3:49 PM >>>> Concerning the workflow with the ajax-login... for some reason the >>>> middleware to set params with json body of my POST isn't working. >>>> >>>> As a workaround I added this to ajax-login, to parse the params: >>>> >>>> (checore/parse-string (slurp (:body request)) true) >>>> >>>> >>>> >>>> I had also to remove the interactive-form workflow I had... now my >>>> middleware looks like this: >>>> >>>> >>>> (friend/authenticate {:credential-fn (partial >>>> creds/bcrypt-credential-fn users) >>>> :login-url "/login" >>>> :workflows [ >>>> (ajax-login) >>>> ]}) >>>> >>>> >>>> >>>> I do have the middlewares supposedly responsible for setting :params >>>> ... not idea why this is not being done. This is the complete block: >>>> >>>> (def app >>>> (-> >>>> (handler/api app-routes) >>>> >>>> (format/wrap-restful-format) >>>> >>>> (middleware/wrap-json-body) >>>> (middleware/wrap-json-params) >>>> (middleware/wrap-json-response) >>>> >>>> (friend/authenticate {:credential-fn (partial >>>> creds/bcrypt-credential-fn users) >>>> :login-url "/login" >>>> :workflows [ >>>> (ajax-login) >>>> ]}) >>>> >>>> ) >>>> ) >>>> >>>> But well, it works for now. >>>> >>>> >>>> >>>> Am Freitag, 25. April 2014 18:53:42 UTC+2 schrieb Ivan Schuetz: >>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "Clojure" group. >>>> To post to this group, send email to clo...@googlegroups.com >>>> Note that posts from new members are moderated - please be patient with >>>> your first post. >>>> To unsubscribe from this group, send email to >>>> clojure+u...@googlegroups.com >>>> For more options, visit this group at >>>> http://groups.google.com/group/clojure?hl=en >>>> --- >>>> You received this message because you are subscribed to the Google >>>> Groups "Clojure" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to clojure+u...@googlegroups.com. >>>> For more options, visit https://groups.google.com/d/optout. >>>> Ivan Schuetz >>>> April 25, 2014 10:53 AM >>>> Also I couldn't find which library you're using for "get-headers" >>>> function... or is it a self made one? >>>> >>>> I found a get-headers in ring-servlet... >>>> https://github.com/ring-clojure/ring/tree/master/ring-servlet >>>> >>>> Added this dependency [ring/ring-servlet "1.3.0-beta1"] didn't work >>>> >>>> And also in a netty adapter library >>>> [ring-netty-adapter "0.0.3"] >>>> >>>> Also didn't work... for now I commented this line out, since it's not >>>> necessary to get my curl test working. But it would be nice if you provide >>>> the dependencies. >>>> >>>> >>>> >>>> Am Donnerstag, 24. April 2014 08:51:29 UTC+2 schrieb Erik Bakstad: >>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "Clojure" group. >>>> To post to this group, send email to clo...@googlegroups.com >>>> Note that posts from new members are moderated - please be patient with >>>> your first post. >>>> To unsubscribe from this group, send email to >>>> clojure+u...@googlegroups.com >>>> For more options, visit this group at >>>> http://groups.google.com/group/clojure?hl=en >>>> --- >>>> You received this message because you are subscribed to the Google >>>> Groups "Clojure" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to clojure+u...@googlegroups.com. >>>> For more options, visit https://groups.google.com/d/optout. >>>> Erik Bakstad >>>> April 24, 2014 12:51 AM >>>> Here is an example from our ajax-login form. After reading Sam's >>>> excellent writeup it should be understandable. >>>> >>>> https://gist.github.com/ebaxt/11244031 >>>> >>>> kl. 00:28:45 UTC+2 torsdag 24. april 2014 skrev Ivan Schuetz følgende: >>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "Clojure" group. >>>> To post to this group, send email to clo...@googlegroups.com >>>> Note that posts from new members are moderated - please be patient with >>>> your first post. >>>> To unsubscribe from this group, send email to >>>> clojure+u...@googlegroups.com >>>> For more options, visit this group at >>>> http://groups.google.com/group/clojure?hl=en >>>> --- >>>> You received this message because you are subscribed to the Google >>>> Groups "Clojure" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to clojure+u...@googlegroups.com. >>>> For more options, visit https://groups.google.com/d/optout. >>>> Ivan Schuetz >>>> April 23, 2014 4:28 PM >>>> Hi, >>>> >>>> I'm trying to get a simple use case running - send a login request to >>>> /login and get success or fail response, preferably in JSON format. >>>> >>>> I followed the example in https://github.com/cemerick/friend#workflows >>>> >>>> >>>> (def users {"root" {:username "root" >>>> :password (creds/hash-bcrypt "admin_password") >>>> :roles #{::admin}} >>>> "jane" {:username "jane" >>>> :password (creds/hash-bcrypt "test") >>>> :roles #{::user}}}) >>>> >>>> >>>> (defroutes app-routes >>>> >>>> (GET "/test" [] {:body {:my-map "helo"}}) >>>> >>>> (route/resources "/") >>>> >>>> (route/not-found "Not found")) >>>> >>>> (def app >>>> (-> >>>> (handler/api app-routes) >>>> (middleware/wrap-json-body) >>>> (middleware/wrap-json-response) >>>> >>>> (friend/authenticate {:credential-fn (partial >>>> creds/bcrypt-credential-fn users) >>>> :workflows [ >>>> (workflows/interactive-form)]}) >>>> ) >>>> ) >>>> >>>> >>>> >>>> I'm testing with curl: >>>> >>>> curl -v --data "username=jane&password=test" >>>> http://localhost:3000/login >>>> >>>> Or: >>>> >>>> curl -v --request POST " >>>> http://localhost:3000/login?username=jane&password=test" >>>> >>>> And I get: >>>> >>>> * About to connect() to localhost port 3000 (#0) >>>> * Trying ::1... >>>> * connected >>>> * Connected to localhost (::1) port 3000 (#0) >>>> > POST /login?username=jane&password=test HTTP/1.1 >>>> > User-Agent: curl/7.24.0 (x86_64-apple-darwin12.0) libcurl/7.24.0 >>>> OpenSSL/0.9.8y zlib/1.2.5 >>>> > Host: localhost:3000 >>>> > Accept: */* >>>> > >>>> < HTTP/1.1 302 Found >>>> < Date: Wed, 23 Apr 2014 22:25:15 GMT >>>> < Location: http://localhost:3000/login?&login_failed=Y&username= >>>> < Content-Length: 0 >>>> < Server: Jetty(7.6.8.v20121106) >>>> < >>>> * Connection #0 to host localhost left intact >>>> * Closing connection #0 >>>> >>>> >>>> This looks like authentication failed, but the data is correct. I >>>> reviewed the curl request, and this seems to be the correct way to send a >>>> POST. But &username= gives me the impression it's not being parsed >>>> correctly. >>>> >>>> Also, how can I get a JSON response instead of only a header? >>>> >>>> Thanks. >>>> >>>> P.S. Maybe it would be positive if this library has an own Google Group. >>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "Clojure" group. >>>> To post to this group, send email to clo...@googlegroups.com >>>> Note that posts from new members are moderated - please be patient with >>>> your first post. >>>> To unsubscribe from this group, send email to >>>> clojure+u...@googlegroups.com >>>> For more options, visit this group at >>>> http://groups.google.com/group/clojure?hl=en >>>> --- >>>> You received this message because you are subscribed to the Google >>>> Groups "Clojure" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to clojure+u...@googlegroups.com. >>>> For more options, visit https://groups.google.com/d/optout. >>>> >>>> >>>> -- >>>> Sam Ritchie (@sritchie) >>>> Paddleguru Co-Founder >>>> 703.863.8561 >>>> www.paddleguru.com >>>> Twitter <http://twitter.com/paddleguru> // >>>> Facebook<http://facebook.com/paddleguru> >>>> >>> -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.