Created
January 22, 2020 19:38
-
-
Save Porter97/e7a813e83d54e63a675ba0c5f2154b80 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#... | |
from .forms import LoginForm, RegistrationForm, ChangePasswordForm,\ | |
PasswordResetRequestForm, PasswordResetForm, ChangeEmailForm | |
#... | |
@auth.route('/change-password', methods=['GET', 'POST']) | |
@login_required | |
def change_password(): | |
form = ChangePasswordForm() | |
if form.validate_on_submit(): | |
if current_user.verify_password(form.old_password.data): | |
current_user.password = form.password.data | |
db.session.add(current_user) | |
db.session.commit() | |
flash('Your password has been updated.') | |
return redirect(url_for('main.index')) | |
else: | |
flash('Invalid password.') | |
return render_template("auth/change_password.html", form=form) | |
@auth.route('/reset', methods=['GET', 'POST']) | |
def password_reset_request(): | |
if not current_user.is_anonymous: | |
return redirect(url_for('main.index')) | |
form = PasswordResetRequestForm() | |
if form.validate_on_submit(): | |
user = User.query.filter_by(email=form.email.data.lower()).first() | |
if user: | |
token = user.generate_reset_token() | |
send_email(user.email, 'Reset Your Password', | |
'auth/email/reset_password', | |
user=user, token=token) | |
flash('An email with instructions to reset your password has been ' | |
'sent to you.') | |
return redirect(url_for('auth.login')) | |
return render_template('auth/reset_password.html', form=form) | |
@auth.route('/reset/<token>', methods=['GET', 'POST']) | |
def password_reset(token): | |
if not current_user.is_anonymous: | |
return redirect(url_for('main.index')) | |
form = PasswordResetForm() | |
if form.validate_on_submit(): | |
if User.reset_password(token, form.password.data): | |
db.session.commit() | |
flash('Your password has been updated.') | |
return redirect(url_for('auth.login')) | |
else: | |
return redirect(url_for('main.index')) | |
return render_template('auth/reset_password.html', form=form) | |
@auth.route('/change_email', methods=['GET', 'POST']) | |
@login_required | |
def change_email_request(): | |
form = ChangeEmailForm() | |
if form.validate_on_submit(): | |
if current_user.verify_password(form.password.data): | |
new_email = form.email.data.lower() | |
token = current_user.generate_email_change_token(new_email) | |
send_email(new_email, 'Confirm your email address', | |
'auth/email/change_email', | |
user=current_user, token=token) | |
flash('An email with instructions to confirm your new email ' | |
'address has been sent to you.') | |
return redirect(url_for('main.index')) | |
else: | |
flash('Invalid email or password.') | |
return render_template("auth/change_email.html", form=form) | |
@auth.route('/change_email/<token>') | |
@login_required | |
def change_email(token): | |
if current_user.change_email(token): | |
db.session.commit() | |
flash('Your email address has been updated.') | |
else: | |
flash('Invalid request.') | |
return redirect(url_for('main.index')) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment