Re: [Repoze-dev] repoze.who API question

2010-03-12 Thread Tres Seaver
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Chris Grindstaff wrote:

 I'm a new user of repoze.who trying to use the hybrid API mentioned in the
 CHANGES.txt.
 
 My user has been authenticated so I want to tell repoze.who to remember the
 user.
 
 I tried:
 request.environ['repoze.who.userid'] = form.data['login']
 get_api(request.environ).remember()
 
 but that doesn't work. Perhaps I've misunderstood IAPI, any suggestions?

You might have found a bug.

- - Is there a traceback you can show us?

- - Are you using a more-or-less stock who.ini to configure the
  middleware?

- - Are you sure the middleware is in your WSGI pipeline?


Tres.
- --
===
Tres Seaver  +1 540-429-0999  tsea...@palladion.com
Palladion Software   Excellence by Designhttp://palladion.com
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkuaxsMACgkQ+gerLs4ltQ41PgCgr3+ZEgx84hIZqiE+vVWed6f5
ttEAn1rxGJ8nIHCsQtfoQlm0jSplpHwT
=Q674
-END PGP SIGNATURE-
___
Repoze-dev mailing list
Repoze-dev@lists.repoze.org
http://lists.repoze.org/listinfo/repoze-dev


Re: [Repoze-dev] repoze.who API question

2010-03-12 Thread Tres Seaver
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Tres Seaver wrote:
 Chris Grindstaff wrote:
 
 I'm a new user of repoze.who trying to use the hybrid API mentioned in the
 CHANGES.txt.
 
 My user has been authenticated so I want to tell repoze.who to remember the
 user.
 
 I tried:
 request.environ['repoze.who.userid'] = form.data['login']
 get_api(request.environ).remember()
 
 but that doesn't work. Perhaps I've misunderstood IAPI, any suggestions?
 
 You might have found a bug.
 
 - Is there a traceback you can show us?
 
 - Are you using a more-or-less stock who.ini to configure the
   middleware?
 
 - Are you sure the middleware is in your WSGI pipeline?

Or maybe the docs aren't clear enough:  if you call 'remember', you have
to inject the headers returned by 'remember' into your response.


Tres.
- --
===
Tres Seaver  +1 540-429-0999  tsea...@palladion.com
Palladion Software   Excellence by Designhttp://palladion.com
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkuayNwACgkQ+gerLs4ltQ5q5gCePtnLIIIT/vugSHduGC6Delso
bbgAn2L5ZunEJxUrwHy10CWfuevJqrvy
=wU/t
-END PGP SIGNATURE-
___
Repoze-dev mailing list
Repoze-dev@lists.repoze.org
http://lists.repoze.org/listinfo/repoze-dev


Re: [Repoze-dev] repoze.who API question

2010-03-12 Thread Tres Seaver
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Chris Grindstaff wrote:
 Hi Tres,
 
 
 - Is there a traceback you can show us?
 
 Nope, there is no exception.
 
 - Are you using a more-or-less stock who.ini to configure the
   middleware?
 
 Yes - here it is.
 
 [plugin:form]
 # identificaion and challenge
 use = repoze.who.plugins.form:make_plugin
 login_form_qs = __do_login
 rememberer_name = auth_tkt
 #form = flows/templates/flows/login_form.html
 #formcallable = auth.views:login_form 
 
 [plugin:mongo]
 use = repoze.who.plugins.mongo:make_plugin
 
 [plugin:auth_tkt]
 # identification
 use = repoze.who.plugins.auth_tkt:make_plugin
 secret = m...@secr3t
 cookie_name = flows
 secure = False
 include_ip = False
 
 [general]
 request_classifier = repoze.who.classifiers:default_request_classifier
 challenge_decider = repoze.who.classifiers:default_challenge_decider
 remote_user_key = REMOTE_USER
 
 [identifiers]
 # plugin_name;classifier_name:.. or just plugin_name (good for any)
 plugins =
   form;browser
   auth_tkt
 
 [challengers]
 # plugin_name;classifier_name:.. or just plugin_name (good for any)
 plugins =
   form;browser
 
 [authenticators]
 plugins =
   auth_tkt
   mongo
 
 - Are you sure the middleware is in your WSGI pipeline?
 
 Yes because if I uncomment the formcallable above it does work. I just
 wanted to use the API instead.
 
 Or maybe the docs aren't clear enough:  if you call 'remember', you have
 to inject the headers returned by 'remember' into your response.
 
 Thanks - I tried that but without success.
 headers = get_api(request.environ).remember()
 print headers returns an empty list.


This is after you did:

  request.environ['repoze.who.userid'] = form.data['login']

But you need ore information than that to do the 'remember'.

OK, so in this mode, you are expecting one of the identifier plugins
(the auth_tkt one) to compute a 'Set-Cookie' header which will allow you
to authenticate on subsequent requests.  Calling 'remember' on the API
essentially just asks the identifier plugin which identified the user
originally to do that job.

In order to trigger that, you need to set up the 'repoze.who.identity'
in the environment as a mapping, holding all the information your
'auth_tkt' plugin needs, as well as the key which tells the API to
consult that plugin.  Somthing like:

  request.environ['repoze.who.identity'] = {
  'identifier': 'auth_tkt',
  'repoze.who.userid': form.data['login'],
  }
  headers = get_api(request.environ).remember()

I base this on reading the code for both the API object's 'remember'
method and the 'remember' method of the 'auth_tkl' plugin.  My guess is
that we need a convenience method which makes this simpler (more like
what you tried to do in the first place).


Tres.
- --
===
Tres Seaver  +1 540-429-0999  tsea...@palladion.com
Palladion Software   Excellence by Designhttp://palladion.com
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkubDI4ACgkQ+gerLs4ltQ6S0gCeKKuWT4ST4KOEF+cdsgT9sgIg
wx8AnAt2rT2mDVYrtvGsH8P0c6pdqOwD
=ooam
-END PGP SIGNATURE-
___
Repoze-dev mailing list
Repoze-dev@lists.repoze.org
http://lists.repoze.org/listinfo/repoze-dev