From c57ebef076438c83a0e408227341398249566ff1 Mon Sep 17 00:00:00 2001 From: stilbruch Date: Wed, 23 Mar 2022 12:30:23 -0500 Subject: User registration and login now works --- app/routes.py | 56 ++++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 46 insertions(+), 10 deletions(-) (limited to 'app/routes.py') diff --git a/app/routes.py b/app/routes.py index fdf65e3..ca556ad 100644 --- a/app/routes.py +++ b/app/routes.py @@ -1,20 +1,56 @@ -from app import app -from database import database_get -from flask import render_template -from login import * +from app import app, db +from flask import render_template, redirect, url_for, flash +from flask_login import login_user +from forms import LoginForm, RegisterForm +from tables.user import User @app.route("/", methods=["GET"]) def index(): return render_template('base/index.html') -@app.route("/login", methods=["GET"]) +@app.route("/home", methods=["GET"]) +def home(): + return render_template('base/home.html') + +@app.route("/login", methods=['GET', 'POST']) def login(): - return render_template('user/login.html') + form = LoginForm() + username = form.username.data + password = form.password.data + + if form.validate_on_submit(): + # Valid submission + user = User.query.filter_by(username=username).first() + + # TODO: show user if login succeeded + if user and user.verify_password(password): + login_user(user) + return redirect(url_for('home')) + else: + flash("invalid login") + return redirect(url_for('register')) -@app.route("/register", methods=["GET"]) + return render_template('user/login.html', form=form) + +@app.route("/register", methods=['GET', 'POST']) def register(): form = RegisterForm() + # Load data from form + username = form.username.data + password = form.password.data + email = form.email.data + + print("register") + + if form.validate_on_submit(): + # Valid submission + user = User.query.filter_by(username=username).first() + if not user: + # No user with this username + user = User(username, password, email) + db.session.add(user) + db.session.commit() - #if form.validate_on_submit(): - # # TODO: make sure username isnt taken somehow - return render_template('user/register.html') + return redirect(url_for('login')) + else: + return render_template('user/register.html', form=form) -- cgit v1.2.3