use new password entry widget for register page (#5805)

This commit is contained in:
Frédéric Péters 2014-10-24 19:43:36 +02:00
parent 4a91c263ea
commit 1505495a35
2 changed files with 18 additions and 52 deletions

View File

@ -52,8 +52,8 @@ def test_user_registration_mismatch():
page = app.get('/register/')
register_form = page.forms[0]
register_form['username'] = 'foo'
register_form['password'] = 'bar'
register_form['password2'] = 'baz'
register_form['password$pwd1'] = 'bar'
register_form['password$pwd2'] = 'baz'
resp = register_form.submit()
assert 'Passwords do not match' in resp.body
@ -65,8 +65,8 @@ def do_user_registration(username='foo', password='bar'):
register_form = page.forms[0]
register_form['username'] = username
if password is not None:
register_form['password'] = password
register_form['password2'] = password
register_form['password$pwd1'] = 'bar'
register_form['password$pwd2'] = 'bar'
resp = register_form.submit()
assert resp.status_int == 302
assert resp.location == 'http://example.net/login'

View File

@ -416,10 +416,9 @@ class MethodDirectory(Directory):
form = Form(enctype='multipart/form-data', action='forgotten')
form.add(HiddenWidget, 't', value = tokenv)
form.add(HiddenWidget, 'a', value = action)
form.add(PasswordWidget, 'new_password', title = _('New Password'),
required=True)
form.add(PasswordWidget, 'new2_password', title = _('New Password (confirm)'),
required=True)
form.add(PasswordEntryWidget, 'new_password', title=_('New Password'),
required=True, formats=['cleartext'],
**get_cfg('passwords', {}))
form.add_submit('submit', _('Submit'))
form.add_submit('cancel', _('Cancel'))
@ -428,11 +427,7 @@ class MethodDirectory(Directory):
return redirect('.')
if form.is_submitted() and not form.has_errors():
check_password(form, 'new_password')
new_password = form.get_widget('new_password').parse()
new2_password = form.get_widget('new2_password').parse()
if new_password != new2_password:
form.set_error('new2_password', _('Passwords do not match'))
new_password = form.get_widget('new_password').parse().get('plain')
if form.is_submitted() and not form.has_errors():
account = PasswordAccount.get(token.username)
@ -514,38 +509,13 @@ class MethodDirectory(Directory):
r = TemplateIO(html=True)
if not passwords_cfg.get('generate', True):
form.add(PasswordWidget, 'password', title = _('Password'), size=25, required=True)
form.add(PasswordWidget, 'password2', title = _('Password (confirm)'), size=25, required=True)
get_response().add_javascript(['jquery.js', 'jquery.passstrength.js'])
r += htmltext('''<script>
$(function() {
$('input#form_password').passStrengthify({
levels: ["%(veryweak)s", "%(veryweak)s", "%(weak)s", "%(weak)s", "%(moderate)s", "%(good)s", "%(strong)s", "%(verystrong)s"],
labels: {
passwordStrength: "%(password_strength)s",
tooShort: "%(tooshort)s"
}
});
});
</script>''') % {'veryweak': _('Very weak'),
'weak': _('Weak'),
'moderate': _('Moderate'),
'good': _('Good'),
'strong': _('Strong'),
'verystrong': _('Very strong'),
'password_strength': _('Password strength:'),
'tooshort': _('Too short')}
form.add(PasswordEntryWidget, 'password', title=_('Password'),
size=25, required=True,
formats=['cleartext'],
**get_cfg('passwords', {}))
form.add_submit('submit', _('Create Account'))
if form.is_submitted() and not form.has_errors():
if not passwords_cfg.get('generate', True):
check_password(form, 'password')
new_password = form.get_widget('password').parse()
new2_password = form.get_widget('password2').parse()
if new_password != new2_password:
form.set_error('password2', _('Passwords do not match'))
if form.is_submitted() and not form.has_errors():
tmp = self.register_submit(form, formdef)
if not form.has_errors():
@ -581,19 +551,15 @@ $(function() {
form.set_error(username_field_key,
_('There is already a user with that email address'))
password = None
if not passwords_cfg.get('generate', True):
check_password(form, 'password')
else:
password = make_password()
# an email will be sent afterwards
if form.has_errors():
return
if not passwords_cfg.get('generate', True):
password = form.get_widget('password').parse()
password = None
if passwords_cfg.get('generate', True):
password = make_password()
# an email will be sent afterwards
else:
password = form.get_widget('password').parse().get('cleartext')
user = get_publisher().user_class()
user.name = username