[Repoze-checkins] r737 - in repoze.pam/trunk/repoze/pam: . plugins

Chris McDonough chrism at agendaless.com
Tue Feb 26 02:46:50 UTC 2008


Author: Chris McDonough <chrism at agendaless.com>
Date: Mon Feb 25 21:46:50 2008
New Revision: 737

Log:
Add logging and fix form remember method.


Modified:
   repoze.pam/trunk/repoze/pam/middleware.py
   repoze.pam/trunk/repoze/pam/plugins/form.py

Modified: repoze.pam/trunk/repoze/pam/middleware.py
==============================================================================
--- repoze.pam/trunk/repoze/pam/middleware.py	(original)
+++ repoze.pam/trunk/repoze/pam/middleware.py	Mon Feb 25 21:46:50 2008
@@ -67,11 +67,14 @@
                 userid = best[3]
                 identifier = best[1][1]
                 environ['REMOTE_USER'] = userid
+        else:
+            logger and logger.info('no identities found, not authenticating')
 
         wrapper = StartResponseWrapper(start_response)
         app_iter = self.app(environ, wrapper.wrap_start_response)
 
         if self.challenge_decider(environ, wrapper.status, wrapper.headers):
+            logger and logger.info('challenge required')
 
             challenge_app = self.challenge(
                 environ,
@@ -82,15 +85,19 @@
                 identity
                 )
             if challenge_app is not None:
+                logger and logger.info('executing challenge app')
                 if app_iter:
                     list(app_iter) # unwind the original app iterator
                 # replace the downstream app with the challenge app
                 app_iter = challenge_app(environ, start_response)
             else:
+                logger and logger.info('configuration error: no challengers')
                 raise RuntimeError('no challengers found')
         else:
-            wrapper.finish_response()
-            logger and logger.info(_ENDED)
+            remember_headers = []
+            if identifier:
+                remember_headers = identifier.remember(environ, identity)
+            wrapper.finish_response(remember_headers)
 
         logger and logger.info(_ENDED)
         return app_iter
@@ -120,8 +127,14 @@
         return results
 
     def authenticate(self, environ, classification, identities):
+        logger = self.logger
         candidates = self.registry.get(IAuthenticator, ())
+        logger and self.logger.info('authenticator plugins registered %s' %
+                                    candidates)
         plugins = self._match_classification(candidates, classification)
+        logger and self.logger.info(
+            'authenticator plugins matched for '
+            'classification "%s": %s' % (classification, plugins))
 
         results = []
 
@@ -131,15 +144,21 @@
             for identifier, identity in identities:
                 userid = plugin.authenticate(environ, identity)
                 if userid:
+                    logger and logger.debug(
+                        'userid returned from %s: %s' % (plugin, userid))
                     tup = ( (auth_rank, plugin),
                             (identifier_rank, identifier),
                             identity,
                             userid
                             )
                     results.append(tup)
+                else:
+                    logger and logger.debug(
+                        'no userid returned from %s: (%s)' % (plugin, userid))
                 identifier_rank += 1
             auth_rank += 1
 
+        logger and logger.debug('identities authenticated: %s' % results)
         return results
 
     def challenge(self, environ, classification, status, app_headers,
@@ -197,8 +216,10 @@
         self.status = status
         return self.buffer.write
 
-    def finish_response(self):
-        headers = self.headers
+    def finish_response(self, extra_headers):
+        if not extra_headers:
+            extra_headers = []
+        headers = self.headers + extra_headers
         write = self.start_response(self.status, headers)
         if write:
             self.buffer.seek(0)

Modified: repoze.pam/trunk/repoze/pam/plugins/form.py
==============================================================================
--- repoze.pam/trunk/repoze/pam/plugins/form.py	(original)
+++ repoze.pam/trunk/repoze/pam/plugins/form.py	Mon Feb 25 21:46:50 2008
@@ -86,7 +86,7 @@
     # IIdentifier
     def forget(self, environ, identity):
         rememberer = self._get_rememberer(environ)
-        self.rememberer.forget(environ, identity)
+        rememberer.forget(environ, identity)
 
     # IChallenger
     def challenge(self, environ, status, app_headers, forget_headers):


More information about the Repoze-checkins mailing list