security.declarePublic('resetPassword')
- def resetPassword(self, userid, uuid, password, confirm) :
+ def resetPassword(self, uuid, password, confirm) :
record = self._passwordResetRequests.get(uuid)
if not record :
return _('Invalid reset password request.')
- recUserid, expiration = record
-
- if recUserid != userid :
- return _('Invalid userid.')
-
+ userid, expiration = record
+ now = DateTime()
if expiration < now :
self.clearExpiredPasswordResetRequests()
return _('Your reset password request has expired. You can ask a new one.')
--- /dev/null
+##parameters=uuid='', password='', confirm='', **kw
+from Products.CMFCore.utils import getUtilityByInterfaceName
+rtool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IRegistrationTool')
+
+msg = rtool.resetPassword(uuid, password, confirm)
+if msg :
+ return context.setStatus(False, msg)
+else :
+ return True
\ No newline at end of file
--- /dev/null
+##parameters=validate=''
+from Products.CMFCore.utils import getUtilityByInterfaceName
+utool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IURLTool')
+atool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IActionsTool')
+
+form = context.REQUEST.form
+uuid = traverse_subpath[0]
+
+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
+
+options = {}
+options['uuid'] = uuid
+options['action'] = '%s/password_reset_form/%s' % (utool(), uuid)
+
+return context.password_reset_template(**options)
\ No newline at end of file
--- /dev/null
+<html metal:use-macro="here/main_template/macros/master"
+ xmlns:tal="http://xml.zope.org/namespaces/tal"
+ xmlns:metal="http://xml.zope.org/namespaces/metal"
+ xmlns:i18n="http://xml.zope.org/namespaces/i18n">
+ <head>
+ <title>Password reset form</title>
+ <meta http-equiv="content-type" content="text/html;charset=utf-8" />
+
+ </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>
+ </form>
+ </div>
+ </body>
+</html>