[Checkins] SVN: Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/ - fix for non-ASCII passwords
Yvo Schubbe
y.2011 at wcm-solutions.de
Fri Aug 12 05:22:58 EDT 2011
Log message for revision 122560:
- fix for non-ASCII passwords
Changed:
U Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/password.py
U Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/tests/password.txt
-=-
Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/password.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/password.py 2011-08-12 03:02:34 UTC (rev 122559)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/password.py 2011-08-12 09:22:57 UTC (rev 122560)
@@ -24,9 +24,10 @@
from zope.schema import Password
from Products.CMFCore.interfaces import IMember
+from Products.CMFCore.interfaces import IPropertiesTool
from Products.CMFCore.interfaces import ISiteRoot
+from Products.CMFDefault.browser.utils import decode
from Products.CMFDefault.browser.utils import memoize
-from Products.CMFDefault.browser.utils import decode
from Products.CMFDefault.formlib.form import SettingsEditFormBase
from Products.CMFDefault.utils import Message as _
@@ -63,7 +64,9 @@
return u''
def _setPassword(self, val):
- self.context.setSecurityProfile(val)
+ ptool = getUtility(IPropertiesTool)
+ default_charset = ptool.getProperty('default_charset', None)
+ self.context.setSecurityProfile(val.encode(default_charset))
def _getLastLoginTime(self):
return self.context.getProperty('last_login_time')
@@ -120,7 +123,8 @@
if self.getContent().last_login_time == DateTime('1999/01/01'):
self.getContent().last_login_time = DateTime('2000/01/01')
mtool = self._getTool('portal_membership')
- mtool.credentialsChanged(data['password'], self.request)
+ mtool.credentialsChanged(self.getContent().context.getPassword(),
+ self.request)
return changes
def handle_change_success(self, action, data):
Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/tests/password.txt
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/tests/password.txt 2011-08-12 03:02:34 UTC (rev 122559)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/tests/password.txt 2011-08-12 09:22:57 UTC (rev 122560)
@@ -36,3 +36,26 @@
>>> browser.getControl(name='form.actions.change').click()
>>> '[[[cmf_default][Your password has been changed.]]' in browser.contents
True
+ >>> uf.getUserById('mbr')._getPassword() == 'new password'
+ True
+
+Same with a non-ASCII password:
+
+ >>> from ZPublisher.HTTPRequest import default_encoding
+ >>> _NON_ASCII = u'\xc4\xd6\xdc password'
+ >>> password = _NON_ASCII.encode(default_encoding)
+
+ >>> browser = Browser() # XXX: how does this work with the old browser?
+ >>> browser.handleErrors = False
+ >>> browser.addHeader('Authorization', 'Basic mbr:new password')
+ >>> browser.open("http://localhost/site/@@password.html")
+ >>> browser.getControl(name='form.password').value = password
+ >>> browser.getControl(name='form.confirmation').value = password
+ >>> browser.getControl(name='form.actions.change').click()
+ >>> '[[[cmf_default][Your password has been changed.]]' in browser.contents
+ True
+
+ >>> ptool = app.site.portal_properties
+ >>> default_charset = ptool.getProperty('default_charset', None)
+ >>> uf.getUserById('mbr')._getPassword() == _NON_ASCII.encode(default_charset)
+ True
More information about the checkins
mailing list