Implementation of the new_password endpoint.

Found a way to create the token that does not need to persist it to the database.
This requires proper error messages, written by people who speak menglis good.
This commit is contained in:
Rebecca Law
2016-01-11 12:23:07 +00:00
parent 8057a138a8
commit a860f713d2
17 changed files with 87 additions and 156 deletions
+10 -10
View File
@@ -1,26 +1,26 @@
from datetime import datetime
from flask import (Markup, render_template, url_for, redirect)
from flask import (render_template, url_for, redirect, flash, current_app)
from app.main import main
from app.main.dao import (password_reset_token_dao, users_dao)
from app.main.dao import users_dao
from app.main.forms import NewPasswordForm
from app.main.views import send_sms_code
from app.main.views import send_sms_code, check_token
@main.route('/new-password/<path:token>', methods=['GET', 'POST'])
def new_password(token):
form = NewPasswordForm()
if form.validate_on_submit():
password_reset_token = password_reset_token_dao.get_token(str(Markup.escape(token)))
if not valid_token(password_reset_token):
form.new_password.errors.append('token is invalid') # Is there a better way
return render_template('views/new-password.html', form=form)
else:
users_dao.update_password(password_reset_token.user_id, form.new_password.data)
user = users_dao.get_user_by_id(password_reset_token.user_id)
email_address = check_token(token)
if email_address:
user = users_dao.update_password(email_address.decode('utf-8'), form.new_password.data)
send_sms_code(user.id, user.mobile_number)
return redirect(url_for('main.two_factor'))
else:
flash('expired token request again')
current_app.logger.info('we got here')
return redirect(url_for('.forgot_password'))
else:
return render_template('views/new-password.html', toke=token, form=form)