[Checkins] SVN: Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/ Dedicated logged_in view added.

Charlie Clark charlie at begeistert.org
Sat Jun 26 14:38:36 EDT 2010


Log message for revision 113907:
  Dedicated logged_in view added.

Changed:
  U   Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/authentication.py
  U   Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/configure.zcml

-=-
Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/authentication.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/authentication.py	2010-06-26 18:36:23 UTC (rev 113906)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/authentication.py	2010-06-26 18:38:36 UTC (rev 113907)
@@ -17,6 +17,7 @@
 
 from urllib import quote, urlencode
 
+from DateTime import DateTime
 from Products.Five import BrowserView
 from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
 from zExceptions import Forbidden
@@ -198,7 +199,45 @@
         return self._setRedirect('portal_actions', 'user/logged_in',
                                  'came_from')
 
+class LoggedIn(ViewBase):
+    """Post login methods"""
+    
+    template = ViewPageTemplateFile("templates/logged_in.pt")
+        
+    def set_skin_cookie(self):
+        stool = self._getTool('portal_skins')
+        if stool.updateSkinCookie():
+            skinname = stool.getSkinNameFromRequest(self.request)
+            stool.changeSkin(skinname, self.request)
+    
+    def first_login(self, member):
+        """First time login, reset password"""
+        utool = self._getTool('portal_url')
+        now = DateTime()
+        member.setProperties(last_login_time='1999/01/01', login_time=now)
+        target = '%s/password_form' % utool()
+        return self.context.request.response.redirect(target)
+            
+    def __call__(self):
+        self.set_skin_cookie()
+        mtool = self._getTool('portal_membership')
+        mtool.createMemberArea()
+        member = mtool.getAuthenticatedMember()
+        now = DateTime()
+        last_login = member.getProperty('login_time', None)
+        ptool = self._getTool('portal_properties')
+        is_first_login = (last_login == '2000/01/01' and
+                          ptool.getProperty('validate_email'))
+        if is_first_login:
+            return self.first_login(member)
+        else:
+            member.setProperties(last_login_time=last_login, login_time=now)
+        came_from = self.request.get('came_from', None)
+        if came_from:
+            return self.request.response.redirect(came_from)
+        return self.template()
 
+
 class MailPasswordFormView(EditFormBase):
 
     """Form view for IMailPasswordSchema.

Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/configure.zcml
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/configure.zcml	2010-06-26 18:36:23 UTC (rev 113906)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/configure.zcml	2010-06-26 18:38:36 UTC (rev 113907)
@@ -9,13 +9,21 @@
       class=".authentication.LoginFormView"
       permission="zope2.View"
       />
-
+      
   <browser:page
       for="Products.CMFCore.interfaces.ISiteRoot"
       layer="Products.CMFDefault.interfaces.ICMFDefaultSkin"
+      name="logged_in.html"
+      class=".authentication.LoggedIn"
+      permission="cmf.ModifyPortalContent"
+      />
+    
+  <browser:page
+      for="Products.CMFCore.interfaces.ISiteRoot"
+      layer="Products.CMFDefault.interfaces.ICMFDefaultSkin"
       name="logout.html"
       class=".authentication.Logout"
-      permission="zope2.View"
+      permission="cmf.ModifyPortalContent"
       />
 
   <browser:page



More information about the checkins mailing list