示例#1
0
    def update(self):
        request = self.request
        passcode = request.params.get("passcode")
        self.principal = principal = passwordTool.get_principal(passcode)

        if principal is not None and passwordTool.can_change_password(principal.uri):
            self.passcode = passcode
            self.title = principal.name or principal.login
        else:
            self.message(_("Passcode is invalid."), "warning")
            raise HTTPFound(location="%s/resetpassword.html" % request.application_url)

        super(ResetPasswordForm, self).update()
示例#2
0
    def update(self):
        request = self.request

        passcode = request.subpath[0]
        self.principal = principal = passwordTool.get_principal(passcode)

        if principal is not None and \
               passwordTool.can_change_password(principal):
            self.passcode = passcode
            self.title = principal.name or principal.login
        else:
            self.message(_("Passcode is invalid."), 'warning')
            raise HTTPFound(
                location='%s/resetpassword.html'%request.application_url)

        super(ResetPasswordForm, self).update()
示例#3
0
    def changePassword(self):
        data, errors = self.extract()

        if errors:
            self.message(errors, "form-error")
        else:
            principal = passwordTool.get_principal(self.passcode)
            passwordTool.change_password(self.passcode, data["password"])

            self.request.registry.notify(PrincipalPasswordChangedEvent(principal))

            # check if principal can be authenticated
            info = authService.authenticate_principal(principal)

            if info.status:
                headers = security.remember(self.request, self.principal.uri)
            else:
                headers = []

            self.message(_("You have successfully changed your password."), "success")
            raise HTTPFound(headers=headers, location=self.request.application_url)