I have tried putting (friend/authenticate) at the beginning and end of this
block:
(def app
(-> app-routes
(wrap-session {:cookie-name "timeout-session" :cookie-attrs {:max-age
90}})
(wrap-cookies)
(wrap-multipart-params)
(wrap-params)
(wrap-nested-params)
(wrap-keyword-params)
(friend/authenticate {:workflows [(workflows/interactive-form)]
:credential-fn (partial
creds/bcrypt-credential-fn users)
:login-uri "/login"
:unauthorized-redirect-uri "/login"
:default-landing-uri "/admin"})))
and:
(def app
(-> app-routes
(friend/authenticate {:workflows [(workflows/interactive-form)]
:credential-fn (partial
creds/bcrypt-credential-fn users)
:login-uri "/login"
:unauthorized-redirect-uri "/login"
:default-landing-uri "/admin"})
(wrap-session {:cookie-name "timeout-session" :cookie-attrs {:max-age
90}})
(wrap-cookies)
(wrap-multipart-params)
(wrap-params)
(wrap-nested-params)
(wrap-keyword-params)
))
but that doesn't seem to matter.
I defined my one user in the namespace as:
(def users {"admin" {:username "admin"
:password (creds/hash-bcrypt "47010thave")
:roles #{::admin}}})
If I point my broswer here:
localhost:30000/admin
I get redirected to here:
localhost:30000/admin
I then fill in this form:
<form action="/login" method="POST">Username: <input type="text" name="
username" /><br />Password: <input type="password" name="password" /><br />
<input type="submit" name="submit" value="submit" /><br /></form>
If I print the request to the terminal, the form params are all blank:
{:ssl-client-cert nil,
:remote-addr "0:0:0:0:0:0:0:1",
:scheme :http,
:query-params {"username" "", "login_failed" "Y", "" nil},
:session {},
:cemerick.friend/auth-config
{:unauthorized-redirect-uri "/login",
:allow-anon? true,
:default-landing-uri "/admin",
:login-uri "/login",
:credential-fn
#<core$partial$fn__4070 clojure.core$partial$fn__4070@1627fd1>,
:workflows
[#<workflows$interactive_form$fn__4503
cemerick.friend.workflows$interactive_form$fn__4503@28ee2be9>],
:unauthenticated-handler
#<Var@557db906:
#<friend$default_unauthenticated_handler
cemerick.friend$default_unauthenticated_handler@114e8c69>>,
:unauthorized-handler
#<Var@3d93cfcb:
#<friend$default_unauthorized_handler
cemerick.friend$default_unauthorized_handler@1aaad63a>>},
:form-params {},
:multipart-params {},
:request-method :get,
:query-string "&login_failed=Y&username=",
:route-params {},
:content-type nil,
:cookies {"timeout-kiosk" {:value "timeout-kiosk3312112"}},
:uri "/login",
:server-name "localhost",
:params {"" nil, "login_failed" "Y", "username" ""},
:headers
{"user-agent"
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.31
(KHTML, like Gecko) Chrome/26.0.1410.65 Safari/537\
.31",
"cookie" "timeout-kiosk=timeout-kiosk3312112",
"accept-charset" "ISO-8859-1,utf-8;q=0.7,*;q=0.3",
"accept"
"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"host" "localhost:30001",
"referer" "http://localhost:30001/login?&login_failed=Y&username=",
"cache-control" "max-age=0",
"accept-encoding" "gzip,deflate,sdch",
"accept-language" "en-US,en;q=0.8",
"connection" "keep-alive"},
:content-length nil,
:server-port 30001,
:character-encoding nil,
:body #<HttpInput org.eclipse.jetty.server.HttpInput@25796d08>}
I have defined the routes like this:
(defroutes app-routes
(ANY "/" request (home-page request))
(GET "/login" request (login request))
(friend/logout (ANY "/logout" request (ring.util.response/redirect "/")))
(GET "/serve-file/:file-id" request (serve-file request))
(GET "/home/:slides-id" request (home-page request))
(GET "/action/:action-to-perform" request (action request))
(GET "/admin" request
(friend/authorize #{::admin} (admin request)))
(GET "/admin/list/:item-type" [item-type] (admin-list item-type))
(GET "/admin/edit/:item-type" request (admin-forms request))
(GET "/admin/edit/:item-type/:item-name" request (admin-forms request))
(POST "/admin/edit/:item-type/:item-name" request
(admin-process-form-input request))
(POST "/admin/edit/:item-type" request (admin-process-form-input request))
(GET "/admin/delete/:item-type/:item-name" request
(admin-delete-ask-for-confirmation request))
(POST "/admin/delete/:item-type/:item-name" request
(admin-delete-finalized request))
(GET "/admin/clone/:item-type/:item-name" request (admin-clone-this-item
request))
(GET "/admin/preview/:item-type/:item-name" request (admin-preview
request))
(GET "/admin/upload" request (admin-upload request))
(route/resources "/")
(route/not-found "Page not found"))
And the login function looks like this:
(defn login [request]
(println (pp/pprint request))
"2013-03-01 - the default name of the function expected by the Friend
authorization library."
(timbre/spy :debug " the return value of the login page: "
(let [login-template (enlive/html-resource
"templates/login.html")
login-html (apply str (enlive/emit* login-template))
layout (enlive/html-resource "templates/admin.html")
layout (enlive/transform layout
[:#outer]
(enlive/html-content
login-html))
html (apply str (enlive/emit* layout))
]
(response html))))
Any thoughts about why the form inputs are empty?
--
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
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 [email protected].
For more options, visit https://groups.google.com/groups/opt_out.