From 13b0614f90cd04ec78c505cad0564fdd79cc0c1a Mon Sep 17 00:00:00 2001 From: =?utf8?q?Benoi=CC=82t=20Pin?= <benoit.pin@gmail.com> Date: Fri, 2 Aug 2013 08:31:31 +0200 Subject: [PATCH 1/1] =?utf8?q?Affichage=20d'un=20bouton=20de=20connexion,?= =?utf8?q?=20juste=20apr=C3=A8s=20la=20r=C3=A9initialisation=20du=20mot=20?= =?utf8?q?de=20passe.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- RegistrationTool.py | 8 +-- skins/control/reset_password_control.py | 8 +-- skins/generic/password_reset_form.py | 28 +++++++-- skins/generic/password_reset_template.pt | 78 ++++++++++++++---------- 4 files changed, 77 insertions(+), 45 deletions(-) diff --git a/RegistrationTool.py b/RegistrationTool.py index 72a7329..1417f30 100644 --- a/RegistrationTool.py +++ b/RegistrationTool.py @@ -244,13 +244,13 @@ class RegistrationTool(BaseRegistrationTool) : def resetPassword(self, uuid, password, confirm) : record = self._passwordResetRequests.get(uuid) if not record : - return _('Invalid reset password request.') + return None, _('Invalid reset password request.') userid, expiration = record now = DateTime() if expiration < now : self.clearExpiredPasswordResetRequests() - return _('Your reset password request has expired. You can ask a new one.') + return None, _('Your reset password request has expired. You can ask a new one.') msg = self.testPasswordValidity(password, confirm=confirm) if not msg : # None if everything ok. Err message otherwise. @@ -259,9 +259,9 @@ class RegistrationTool(BaseRegistrationTool) : if member : member.setSecurityProfile(password=password) del self._passwordResetRequests[uuid] - return _('Password successfully resetted.') + return userid, _('Password successfully reset.') else : - return _('"%s" username not found.') % userid + return None, _('"%s" username not found.') % userid InitializeClass(RegistrationTool) \ No newline at end of file diff --git a/skins/control/reset_password_control.py b/skins/control/reset_password_control.py index f903e24..8cdcdb1 100644 --- a/skins/control/reset_password_control.py +++ b/skins/control/reset_password_control.py @@ -2,8 +2,8 @@ from Products.CMFCore.utils import getUtilityByInterfaceName rtool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IRegistrationTool') -msg = rtool.resetPassword(uuid, password, confirm) +userid, msg = rtool.resetPassword(uuid, password, confirm) if msg : - return context.setStatus(False, msg) -else : - return True \ No newline at end of file + context.setStatus(False, msg) + +return userid \ No newline at end of file diff --git a/skins/generic/password_reset_form.py b/skins/generic/password_reset_form.py index b783b63..6dfb557 100644 --- a/skins/generic/password_reset_form.py +++ b/skins/generic/password_reset_form.py @@ -1,19 +1,37 @@ ##parameters=validate='' from Products.CMFCore.utils import getUtilityByInterfaceName +from Products.Plinn.utils import Message as _ utool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IURLTool') atool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IActionsTool') form = context.REQUEST.form uuid = traverse_subpath[0] +passwordChanged = False + if validate and \ - context.validatePassword(**form) and \ - context.reset_password_control(uuid=uuid, **form) and \ - context.setRedirect(atool, 'user/join', ajax=form.get('ajax')) : - return + context.validatePassword(**form) : + userid = context.reset_password_control(uuid=uuid, **form) + if userid : + passwordChanged = True options = {} options['uuid'] = uuid -options['action'] = '%s/password_reset_form/%s' % (utool(), uuid) +options['passwordChanged'] = passwordChanged +if passwordChanged : + hidden_vars = ({'name' : '__ac_name', 'value' : userid}, + {'name' : '__ac_password', 'value' : form['password']}, + {'name' : 'noAjax', 'value' : '1'}) + target = utool() + buttons = ({'name': 'login', 'value': _('Login')},) +else : + hidden_vars = [] + target = '%s/password_reset_form/%s' % (utool(), uuid) + buttons = ({'name': 'validate', 'value': _('Validate')},) + +options['form'] = { 'action': target, + 'listButtonInfos': tuple(buttons), + 'listHiddenVarInfos': hidden_vars } + return context.password_reset_template(**options) \ No newline at end of file diff --git a/skins/generic/password_reset_template.pt b/skins/generic/password_reset_template.pt index 30c46b4..fc32ee0 100644 --- a/skins/generic/password_reset_template.pt +++ b/skins/generic/password_reset_template.pt @@ -8,38 +8,52 @@ </head> <body i18n:domain="plinn"> - <div metal:fill-slot="main_no_tabs" tal:omit-tag=""> - <form tal:attributes="action options/action"> - <h2 i18n:translate="">Password resetting</h2> - <table class="TwoColumnForm"> - <tr> - <td colspan="2"> - <dl class="FieldHelp"> - <dd i18n:translate=""> - Please enter a new password and clic on "Validate" button. - </dd> - </dl> - </td> - </tr> - <tr> - <th i18n:translate="">Password</th> - <td> - <input type="password" name="password"/> - </td> - </tr> - <tr> - <th i18n:translate="">Confirm</th> - <td> - <input type="password" name="confirm"/> - </td> - </tr> - <tr> - <td><br/></td> - <td> - <input type="submit" name="validate" value="Validate" i18n:attributes="value"/> - </td> - </tr> - </table> + <div metal:fill-slot="main_no_tabs" + tal:define="form options/form" + id="Desktop"> + <form tal:attributes="action form/action"> + <div tal:condition="not: options/passwordChanged" tal:omit-tag=""> + <h2 i18n:translate="">Password resetting</h2> + <table class="TwoColumnForm"> + <tr> + <td colspan="2"> + <dl class="FieldHelp"> + <dd i18n:translate=""> + Please enter a new password and clic on "Validate" button. + </dd> + </dl> + </td> + </tr> + <tr> + <th i18n:translate="">Password</th> + <td> + <input type="password" name="password"/> + </td> + </tr> + <tr> + <th i18n:translate="">Confirm</th> + <td> + <input type="password" name="confirm"/> + </td> + </tr> + <tr> + <td><br/></td> + <td> + <metal:macro metal:use-macro="context/form_widgets/macros/hidden_vars"/> + <metal:macro metal:use-macro="context/form_widgets/macros/buttons"/> + </td> + </tr> + </table> + </div> + <div tal:condition="options/passwordChanged" tal:omit-tag=""> + <h2 i18n:translate="">Password changed</h2> + <p i18n:translate=""> + Your password has been successfully reset. You can log in + immediately by clicking the "Login" button + </p> + <metal:macro metal:use-macro="context/form_widgets/macros/hidden_vars"/> + <metal:macro metal:use-macro="context/form_widgets/macros/buttons"/> + </div> </form> </div> </body> -- 2.20.1