[Erp5-report] r37835 fabien - /erp5/trunk/products/ERP5/Tool/PasswordTool.py

nobody at svn.erp5.org nobody at svn.erp5.org
Mon Aug 16 11:36:22 CEST 2010


Author: fabien
Date: Mon Aug 16 11:36:20 2010
New Revision: 37835

URL: http://svn.erp5.org?rev=37835&view=rev
Log:
previous commits where wrong :
in context of erp5 site (not web_site), user were redirected to
/erp5/portal_password/login_form, so after sign in, they were redirected to
/erp5/portal_password which is wrong.

Following patch use came_from request variable and is compatible both with
 web_site and erp5 site.

Modified:
    erp5/trunk/products/ERP5/Tool/PasswordTool.py

Modified: erp5/trunk/products/ERP5/Tool/PasswordTool.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Tool/PasswordTool.py?rev=37835&r1=37834&r2=37835&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Tool/PasswordTool.py [utf8] (original)
+++ erp5/trunk/products/ERP5/Tool/PasswordTool.py [utf8] Mon Aug 16 11:36:20 2010
@@ -69,9 +69,16 @@ class PasswordTool(BaseTool):
     """
     Create a random string and expiration date for request
     """
+    if REQUEST is None:
+      REQUEST = get_request()
+
     if user_login is None:
       user_login = REQUEST["user_login"]
 
+    site_url = self.getPortalObject().absolute_url()
+    if REQUEST and 'came_from' in REQUEST:
+      site_url = REQUEST.came_from
+
     msg = None
     # check user exists, and have an email
     user_list = self.getPortalObject().acl_users.\
@@ -94,8 +101,7 @@ class PasswordTool(BaseTool):
       if REQUEST is not None:
         parameter = urlencode(dict(portal_status_message=msg))
         ret_url = '%s/login_form?%s' % \
-                  (self.absolute_url(),
-                  parameter)
+                  (site_url, parameter)
         return REQUEST.RESPONSE.redirect( ret_url )
       return msg
 
@@ -103,7 +109,7 @@ class PasswordTool(BaseTool):
     random_url = self._generateUUID()
     parameter = urlencode(dict(reset_key=random_url))
     url = "%s/portal_password/%s?%s" % (
-                                self.absolute_url(),
+                                site_url,
                                 'PasswordTool_viewResetPassword',
                                 parameter)
     # generate expiration date
@@ -132,8 +138,7 @@ class PasswordTool(BaseTool):
     if REQUEST is not None:
       msg = translateString("An email has been sent to you.")
       parameter = urlencode(dict(portal_status_message=msg))
-      ret_url = '%s/login_form?%s' % (self.absolute_url(),
-                                      parameter)
+      ret_url = '%s/login_form?%s' % (site_url, parameter)
       return REQUEST.RESPONSE.redirect( ret_url )
 
   def _generateUUID(self, args=""):
@@ -162,8 +167,11 @@ class PasswordTool(BaseTool):
     if REQUEST is None:
       REQUEST = get_request()
     user_login, expiration_date = self._password_request_dict.get(reset_key, (None, None))
+    site_url = self.getPortalObject().absolute_url()
+    if REQUEST and 'came_from' in REQUEST:
+      site_url = REQUEST.came_from
     if reset_key is None or user_login is None:
-      ret_url = '%s/login_form' % self.getPortalObject().absolute_url()
+      ret_url = '%s/login_form' % site_url
       return REQUEST.RESPONSE.redirect( ret_url )
 
     # check date
@@ -171,8 +179,7 @@ class PasswordTool(BaseTool):
     if current_date > expiration_date:
       msg = translateString("Date has expire.")
       parameter = urlencode(dict(portal_status_message=msg))
-      ret_url = '%s/login_form?%s' % (self.getPortalObject().absolute_url(),
-                                      parameter)
+      ret_url = '%s/login_form?%s' % (site_url, parameter)
       return REQUEST.RESPONSE.redirect( ret_url )
 
     # redirect to form as all is ok
@@ -201,6 +208,13 @@ class PasswordTool(BaseTool):
 
     current_date = DateTime()
     msg = None
+    if REQUEST is None:
+      REQUEST = get_request()
+    site_url = self.getPortalObject().absolute_url()
+    if REQUEST and 'came_from' in REQUEST:
+      site_url = REQUEST.came_from
+    if self.getWebSiteValue():
+      site_url = self.getWebSiteValue().absolute_url()
     if register_user_login is None:
       msg = "Key not known. Please ask reset password."
     elif register_user_login != user_login:
@@ -214,8 +228,7 @@ class PasswordTool(BaseTool):
     if msg is not None:
       if REQUEST is not None:
         parameter = urlencode(dict(portal_status_message=msg))
-        ret_url = '%s/login_form?%s' % (self.getPortalObject().absolute_url(),
-                                        parameter)
+        ret_url = '%s/login_form?%s' % (site_url, parameter)
         return REQUEST.RESPONSE.redirect( ret_url )
       else:
         return msg
@@ -229,8 +242,7 @@ class PasswordTool(BaseTool):
     if REQUEST is not None:
       msg = translateString("Password changed.")
       parameter = urlencode(dict(portal_status_message=msg))
-      ret_url = '%s/login_form?%s' % (self.getPortalObject().absolute_url(),
-                                      parameter)
+      ret_url = '%s/login_form?%s' % (site_url, parameter)
       return REQUEST.RESPONSE.redirect( ret_url )
 
 InitializeClass(PasswordTool)




More information about the Erp5-report mailing list