Oh, I think I figured this out. I re-read this:
https://github.com/cemerick/friend/#authentication
And I see the keys here are strings:
(def users {"root" {:username "root"
:password (creds/hash-bcrypt "admin_password")
:roles #{::admin}}
"jane" {:username "jane"
:password (creds/hash-bcrypt "user_password")
:roles #{::user}}})
I switched to keywords when I implemented this in my own code. When I
copy and paste this map (above) into my code, and use "root" and
"admin_password" to login, it seems to work.
On 16 Sty, 11:20, larry google groups <[email protected]>
wrote:
> > You're still not using wrap-keyword-params.
>
> Thanks. I changed the routes so I now have:
>
> (def app
> (-> app-routes
> (friend/authenticate {:credential-fn (partial creds/bcrypt-
> credential-fn (:users @interactions))
> :workflows [(workflows/interactive-
> form)]})
> (wrap-resource "public")
> (wrap-session {:cookie-name "discovery-session" :cookie-attrs
> {:max-age 10000 }})
> (wrap-cookies)
> (wrap-keyword-params)
> (wrap-nested-params)
> (wrap-params)))
>
> Then I go here with my browser:
>
> localhost:40000/login
>
> and I copy and paste the username and password from the :users map
> inside of @interactions. Then I hit the submit button. I get
> redirected back to the login page. The URL is now:
>
> http://localhost:40000/login?&login_failed=Y&username=lawrence
>
> I am trying to think of what I can change so I can see some of the
> intermediate steps. How do I debug this and find out what the point of
> failure is? Part of me is thinking that I could clone Friend from
> github and build my own custom version of it, with debugging code
> throughout it. But most of me thinks that is stupid, since it works
> for others, so the problem can not be in Friend, it must be something
> that I am doing.
>
> ---- lawrence
>
> On 16 Sty, 09:55, Chas Emerick <[email protected]> wrote:
>
>
>
>
>
>
>
> > On Jan 16, 2013, at 9:07 AM, larry google groups wrote:
>
> > > I define a var with user info like this:
>
> > > (ns kiosks-clojure.fake-data-for-development
> > > (:require [cemerick.friend :as friend]
> > > (cemerick.friend [workflows :as workflows]
> > > [credentials :as creds])))
> > > (def fake-data
> > > {
> > > :users {:root {:username "[email protected]"
> > > :password (creds/hash-bcrypt "admin_password")
> > > :roles #{::admin}
> > > :created_at "2013-01-08 14:00:00"
> > > :telephone-numbers [{:country "USA" :number "434 825
> > > 7694"}
> > > {:country "USA" :number "732 364
> > > 3640"}]}
> > > :jane {:username "[email protected]"
> > > :password (creds/hash-bcrypt "user_password")
> > > :roles #{::user}
> > > :created_at "2013-01-10 16:40:34"
> > > :telephone-numbers []}}
> > > })
>
> > > Then in my core namespace, I add this to an atom:
>
> > > (def interactions (atom fd/fake-data))
>
> > > And then later I fetch this and add this to the authentication of
> > > friend:
>
> > > (def app
> > > (-> app-routes
> > > (friend/authenticate {:credential-fn (partial creds/bcrypt-
> > > credential-fn (:users @interactions))
> > > :workflows [(workflows/interactive-
> > > form)]})
> > > (wrap-resource "public")
> > > (wrap-session {:cookie-name "discovery-session" :cookie-attrs
> > > {:max-age 10000 }})
> > > (wrap-cookies)
> > > (wrap-params)))
>
> > > Any thoughts about where I should try to debug this?
>
> > You're still not using wrap-keyword-params.
>
> > - Chas
--
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