acm-site/acmsite/dashboard/__init__.py
Cara Salter 87adc200b3
Initial work on local passwords.
- Create password change modal on user dashboard
- Split login into two flows -- WPI and local

Need to define password strength requirements and create local login
page, as well as allow for setting an alternative contact email.
2024-05-04 11:21:32 +10:00

39 lines
1.4 KiB
Python

from werkzeug.security import generate_password_hash, check_password_hash
from flask import Blueprint, render_template, request, flash, redirect, url_for
from flask_login import current_user, login_required
from acmsite.dashboard.forms import PasswordForm
from acmsite import db
bp = Blueprint('dashboard', __name__, url_prefix='/dashboard')
@bp.route("/")
@login_required
def home():
form = PasswordForm()
return render_template('dashboard.html', form=form)
@bp.route("/change_password", methods=["POST"])
@login_required
def change_password():
form = PasswordForm(request.form)
if form.validate_on_submit():
current_password = request.form.get("current_password")
new_password = request.form.get("new_password")
password_confirm = request.form.get("password_confirm")
if new_password == password_confirm:
if current_password == '' and current_user.password == '':
current_user.password = generate_password_hash(new_password)
flash("Password set successfully.")
elif check_password_hash(current_user.password, current_password):
current_user.password = generate_password_hash(new_password)
flash("Password updated successfully.")
else:
flash("Incorrect password.")
else:
flash("Passwords do not match!")
db.session.commit()
return redirect(url_for("dashboard.home"))