[Erp5-report] r23641 - /erp5/trunk/products/ERP5Wizard/Tool/WizardTool.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Tue Sep 16 17:04:04 CEST 2008
Author: ivan
Date: Tue Sep 16 17:03:58 2008
New Revision: 23641
URL: http://svn.erp5.org?rev=23641&view=rev
Log:
Use cookie for authentication. Remove old unused code.
Modified:
erp5/trunk/products/ERP5Wizard/Tool/WizardTool.py
Modified: erp5/trunk/products/ERP5Wizard/Tool/WizardTool.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Wizard/Tool/WizardTool.py?rev=23641&r1=23640&r2=23641&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Wizard/Tool/WizardTool.py (original)
+++ erp5/trunk/products/ERP5Wizard/Tool/WizardTool.py Tue Sep 16 17:03:58 2008
@@ -42,6 +42,9 @@
import zLOG
import cookielib
from urlparse import urlparse, urlunparse
+from base64 import encodestring, decodestring
+from urllib import quote, unquote
+from DateTime import DateTime
# global (RAM) cookie storage
cookiejar = cookielib.CookieJar()
@@ -413,11 +416,19 @@
"""Updates parameter_dict to include local saved server info settings. """
global _server_to_preference_ids_map
for key, value in _server_to_preference_ids_map.items():
- parameter_dict[key] = self.getExpressConfigurationPreference(value, None)
+ if key != 'password':
+ parameter_dict[key] = self.getExpressConfigurationPreference(value, None)
+ else:
+ parameter_dict['password'] = ''
## add local ERP5 instance url
parameter_dict['erp5_url'] = self.getPortalObject().absolute_url()
# add user preffered language
parameter_dict['user_preferred_language'] = getattr(self, 'user_preferred_language', 'en')
+ # add password from cookie
+ __ac_express = self.REQUEST.get('__ac_express', None)
+ if __ac_express is not None:
+ __ac_express = decodestring(unquote(__ac_express))
+ parameter_dict['password'] = __ac_express
def _updateParameterDictWithFileUpload(self, parameter_dict):
"""Updates parameter_dict to replace file upload with their file content,
@@ -518,13 +529,7 @@
######################################################
## Navigation ##
######################################################
- security.declareProtected(Permissions.ModifyPortalContent, 'init')
- def init(self, REQUEST=None, **kw):
- """ Unconditionaly reset client_id and start new configuration process. """
- #user_id = REQUEST.get('field_my_ac_name', '')
- #password = REQUEST.get('field_my_ac_password', '')
- return self.next(REQUEST, **kw)
-
+
#security.declareProtected(Permissions.ModifyPortalContent, 'login')
def login(self, REQUEST):
""" Login client and show next form. """
@@ -547,9 +552,16 @@
return self.WizardTool_dialogForm(form_html=response["data"])
elif command == "next":
self._setServerInfo(user_id=user_id, \
- password=password, \
+ #password=password, \
client_id=response['server_buffer'].get('client_id', None), \
current_bc_index=response['server_buffer'].get('current_bc_index', None))
+ # set encoded __ac_express cookie at client's browser
+ __ac_express = quote(encodestring(password))
+ expires = (DateTime() + 1).toZone('GMT').rfc822()
+ REQUEST.RESPONSE.setCookie('__ac_express',
+ __ac_express,
+ expires = expires)
+ REQUEST.set('__ac_express', __ac_express)
return self.next(REQUEST=REQUEST)
elif command == "login":
## invalid user/password
@@ -624,15 +636,18 @@
what's happening. """
active_process = self.portal_activities.newActiveProcess()
REQUEST.set('active_process_id', active_process.getId())
- self.activate(active_process=active_process, tag = 'initialERP5Setup').initialERP5Setup()
+ request_restore_dict = {'__ac_express': self.REQUEST.get('__ac_express', None),}
+ self.activate(active_process=active_process, tag = 'initialERP5Setup').initialERP5Setup(request_restore_dict)
return self.Wizard_viewInstallationStatus(REQUEST)
security.declareProtected(Permissions.ModifyPortalContent, 'initialERP5Setup')
- def initialERP5Setup(self):
+ def initialERP5Setup(self, request_restore_dict={}):
""" Get from remote generation server customized bt5 template files
and then install them. """
- # TODO: the installation have to be splitted into 1 activity per business
- # template install.
+ # restore some REQUEST variables as this method is executed in an activity
+ # and there's no access to real original REQUEST
+ for key, value in request_restore_dict.items():
+ self.REQUEST.set(key, value)
self.REQUEST.form['wizard_request_type'] = 'initial_setup'
# calculate server_url, because after bt5 installation reindexing is started
# which will make it impossible to get preferences items
More information about the Erp5-report
mailing list