def reset_password(): form = ResetPasswordForm(request.form) if request.method == "POST" and form.validate(): token = form.token.data s = Signer(app.config['SECRET_KEY']) try: email = s.unsign(token) except BadSignature: return render_template("reset_invalid_token.html") user = User.query.filter_by(email=email).first() if user: user.set_password(form.password.data) print user.password login_user(user) return redirect("/") else: return render_template("reset_invalid_token.html") token = request.args.get('token', None) if not token: return render_template("reset_invalid_token.html") return render_template("reset_password.html", form=form, token=token)
def reset_password(): if request.method == "POST": form = ResetPasswordForm( request.form) if( form.validate()): user = User.objects.get( email=form.email.data) password_reset_token = user.generate_password_reset_token() host = request.headers["HOST"] link = "http://%s/accounts/password/reset/%s" % (host, password_reset_token) mesg = "Hi %s,\n\nSomeone (probably you) requested for a password reset at %s. Please visit the following link if you wish to reset your password:\n\n%s\n\nHave a good day!" % (user.name, host, link) send_mail( "[%s] Reset Password" % host, mesg, current_app.config["SERVER_EMAIL"], [user.email], fail_silently=False) flash( "Sent you a mail to reset the password. Do remember to check your spam folder as well.", "success") form = ResetPasswordForm() return render_template( "auth/reset_password.html", **locals())
def reset_password_request(): """ 验证输入并发送修改密码的邮箱验证 """ if request.method == 'GET': return render_template('auth/reset_password.html') if request.method == 'POST': g.re = {'status': True, 'data': {}} data = loads(request.get_data(), encoding='utf-8') print data resetpwd_data = data['data'] email = resetpwd_data['email'] password1 = resetpwd_data['passwordRS1'] password2 = resetpwd_data['passwordRS2'] form = ResetPasswordForm(email=email, password1=password1, password2=password2) if form.validate(): if g.re['status']: user = User.query.filter_by(email=email).first() token = user.generate_resetpwd_token(password1) send_email(user.email, u'请验证您的账户并完成密码修改', 'auth/email/resetpwd_confirm', user=user, token=token) response_messages(g.re, title=u'邮箱验证', content=u'请查收验证邮件并及时完成验证!') return jsonify(g.re) else: return jsonify(g.re) else: re = g.re re['status'] = False for key, value in form.errors.items(): print key + ':' + str(value[0]) re['data'][key] = value[0] return jsonify(re)
def reset_password(): if current_user.is_authenticated: return render_view(url_for('latest'), redirect=True, message=_('SESSIONS_MSG_ALREADY_SIGNED_IN')) code = request.values.get('code', None) user = User.find_by_reset_password_code(code) if not user: return render_view(url_for('sessions.forgot_password'), redirect=True, message=_('ERROR_INVALID_RESET_PASSWORD_CODE')) form = ResetPasswordForm(user=user) if form.is_submitted(): try: if not form.validate(): raise Exception(_('ERROR_INVALID_SUBMISSION')) if not verify_captcha(): raise Exception(_('SESSIONS_ERROR_UNFINISHED_CHALLENGE_LBL')) user.set_password(form.password.data) user.reset_password = None # store the user user.save() return render_view( url_for('sessions.login'), redirect=True, message=_('SESSIONS_MSG_PASSWORD_RESET_COMPLETED')) except Exception as e: flash(e.message, 'error') return render_view('admin/sessions/reset_password.html', form=form)
def reset(): form = ResetPasswordForm(request.form) if request.method == 'POST' and form.validate(): user = db.retrieve_user_by_email(form.email.data) if not user: form.email.errors.append('Email address not found') # generate 6 chars random password generated_password = ''.join([random.choice(string.ascii_letters + string.digits) for _ in range(6)]) # change password db.change_password(user.username, user.generate_hash(generated_password)) # generate email message email_msg = render_template('email/reset_password.html', username=user.username, new_password=generated_password) # send email send_email(recipient=user.email, subject='Reset Password', template=email_msg) flash('New password was sent to your email account, please check your inbox') return redirect(url_for('home')) return render_template('reset.html', form=form, title='Forgot Password')