import functools from flask import Blueprint from flask import g from flask import redirect from flask import url_for from flask import session from capsulflask.db import get_model bp = Blueprint("auth", __name__, url_prefix="/auth") def account_required(view): """View decorator that redirects anonymous users to the login page.""" @functools.wraps(view) def wrapped_view(**kwargs): if session.get("account") is None: return redirect(url_for("auth.login")) return view(**kwargs) return wrapped_view @bp.route("/register", methods=("GET", "POST")) def register(): if request.method == "POST": email = request.form["email"] model = get_model() error = None if not email: error = "Email is required." elif ( model. ): error = f"User {username} is already registered." if error is None: # the name is available, store it in the database and go to # the login page db.execute( "INSERT INTO user (username, password) VALUES (?, ?)", (username, generate_password_hash(password)), ) db.commit() return redirect(url_for("auth.login")) flash(error) return render_template("auth/register.html")