mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-09-11 10:28:41 -04:00
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:
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user