flask_photo_scaling_app/app/auth/reset_password.py

64 lines
2.0 KiB
Python
Raw Normal View History

2021-01-30 06:36:25 -08:00
#!/usr/bin/env python3
2025-02-09 17:12:51 -08:00
from flask import (
Blueprint, redirect, url_for, flash, render_template, current_app
)
2021-01-30 06:36:25 -08:00
from flask_login import current_user
from app.models import Contributor
from app.forms import ResetPasswordForm, ResetPasswordRequestForm
from .email import send_password_reset_email
from .. import db
pwd = Blueprint(
"pwd", __name__, template_folder="templates"
)
@pwd.route('/reset-password/<token>', methods=['GET', 'POST'])
def reset_password(token):
if current_user.is_authenticated:
return redirect(url_for('proute.index'))
contributor = Contributor.verify_reset_password_token(token)
if not contributor:
return redirect(url_for('proute.index'))
form = ResetPasswordForm()
if form.validate_on_submit():
contributor.set_password(form.password.data)
db.session.commit()
flash('Your password has been reset.')
return redirect(url_for('auths.login'))
2025-02-09 17:12:51 -08:00
return render_template(
'reset_password.html',
title="New Password?",
form=form,
)
2021-01-30 06:36:25 -08:00
@pwd.route('/reset-password-request', methods=['GET', 'POST'])
def reset_password_request():
if current_user.is_authenticated:
return(redirect(url_for('proute.index')))
else:
form = ResetPasswordRequestForm()
if form.validate_on_submit():
2025-02-09 17:12:51 -08:00
contributor = Contributor.query.filter_by(
email=form.email.data,
).first()
2021-01-30 06:36:25 -08:00
if contributor:
2025-02-09 17:12:51 -08:00
send_password_reset_email(
contributor,
current_app.config['EXTERNAL_URL'],
)
my_flash = 'Check your email for the instructions '
my_flash += 'to reset your password'
flash(my_flash)
2021-01-30 06:36:25 -08:00
return redirect(url_for('auths.login'))
else:
flash('Sorry, invalid email')
return redirect(url_for('auths.login'))
2025-02-09 17:12:51 -08:00
return render_template(
'reset_password_request.html',
title='Reset Password',
form=form,
)