[Checkins] SVN: Products.CMFDefault/trunk/Products/CMFDefault/browser/ Added handling of user logged in via ZMI.

Charlie Clark charlie at begeistert.org
Fri Jun 25 03:35:22 EDT 2010


Log message for revision 113819:
  Added handling of user logged in via ZMI.

Changed:
  U   Products.CMFDefault/trunk/Products/CMFDefault/browser/authentication.py
  U   Products.CMFDefault/trunk/Products/CMFDefault/browser/configure.zcml
  U   Products.CMFDefault/trunk/Products/CMFDefault/browser/templates/logged_out.pt
  U   Products.CMFDefault/trunk/Products/CMFDefault/browser/tests/authentication.txt

-=-
Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/authentication.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/authentication.py	2010-06-25 06:55:08 UTC (rev 113818)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/authentication.py	2010-06-25 07:35:22 UTC (rev 113819)
@@ -15,7 +15,7 @@
 $Id$
 """
 
-from urllib import quote
+from urllib import quote, urlencode
 
 from Products.Five import BrowserView
 from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
@@ -250,6 +250,8 @@
 class Logout(ViewBase):
     """Log the user out"""
     
+    template = ViewPageTemplateFile("templates/logged_out.pt")
+    
     @memoize
     def logged_in(self):
         """Check whether the user is (still logged in)"""
@@ -269,8 +271,11 @@
     
     def __call__(self):
         """Clear cookies and return the template"""
+        if 'portal_status_message' in self.request:
+            return self.template()
         if self.logged_in():
             self.clear_skin_cookie()
             self.logout()
-            return self.request.response.redirect(self.request.URL)
-        return super(Logout, self).__call__()
+            status = "?" + urlencode({'portal_status_message':
+                                      _(u'You have been logged out.')})
+            return self.request.response.redirect(self.request.URL + status)

Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/configure.zcml
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/configure.zcml	2010-06-25 06:55:08 UTC (rev 113818)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/configure.zcml	2010-06-25 07:35:22 UTC (rev 113819)
@@ -182,7 +182,6 @@
       layer="..interfaces.ICMFDefaultSkin"
       name="logout.html"
       class=".authentication.Logout"
-      template="templates/logged_out.pt"
       permission="zope2.View"
       />
 

Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/templates/logged_out.pt
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/templates/logged_out.pt	2010-06-25 06:55:08 UTC (rev 113818)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/templates/logged_out.pt	2010-06-25 07:35:22 UTC (rev 113819)
@@ -2,8 +2,6 @@
 <body>
 
 <metal:slot metal:fill-slot="body" i18n:domain="cmf_default">
-<p tal:condition="not: view/logged_in"
-   i18n:translate="">You have been logged out.</p>
 <p tal:condition="view/logged_in"
    i18n:translate="">You are logged in outside the portal. You may need to
 <a href="/manage_zmi_logout">log out of the Zope management interface</a>.</p>

Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/tests/authentication.txt
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/tests/authentication.txt	2010-06-25 06:55:08 UTC (rev 113818)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/tests/authentication.txt	2010-06-25 07:35:22 UTC (rev 113819)
@@ -156,4 +156,12 @@
     True
     >>> browser.open('http://localhost/site/@@logout.html')
     >>> '[cmf_default][You have been logged out.' in browser.contents
+    True
+
+User logged in via ZMI and therefore cannot logout
+    >>> browser = Browser()
+    >>> browser.open('http://localhost/site/manage_main')
+    >>> browser.cookies['__ac'] = '%s' % mbr_credentials
+    >>> browser.open('http://localhost/site/@@logout.html')
+    >>> '[[cmf_default][You are logged in outside the portal' in browser.contents
     True
\ No newline at end of file



More information about the checkins mailing list