summaryrefslogtreecommitdiff
path: root/app/routes/user.py
diff options
context:
space:
mode:
authorFivePixels <o5pxels@gmail.com>2022-04-23 15:58:33 -0500
committerFivePixels <o5pxels@gmail.com>2022-04-23 15:58:33 -0500
commitb45e96d88485f7c9a7b6281b781218e180a43e94 (patch)
treef942eec8ed16ee48008c81d519639b9f761f5d34 /app/routes/user.py
parent628e47b4b8243fa7e84703f3f71c3de19c5baa65 (diff)
parent4f1e55112138a1f3b4be3bf23e3740ae3effac35 (diff)
downloadStrengthy-b45e96d88485f7c9a7b6281b781218e180a43e94.tar.xz
Strengthy-b45e96d88485f7c9a7b6281b781218e180a43e94.zip
Merge branch 'master' of stilbruch.xyz:strengthy
Diffstat (limited to 'app/routes/user.py')
-rw-r--r--app/routes/user.py53
1 files changed, 53 insertions, 0 deletions
diff --git a/app/routes/user.py b/app/routes/user.py
new file mode 100644
index 0000000..d218738
--- /dev/null
+++ b/app/routes/user.py
@@ -0,0 +1,53 @@
+from app import app, db
+from flask import render_template, redirect, request, url_for, flash
+from flask_login import current_user, login_user, login_required, logout_user
+from forms import LoginForm, RegisterForm
+from tables import User
+
+@app.route("/login", methods=['GET', 'POST'])
+def login():
+ 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 username or password", "danger")
+
+ return render_template('user/login.html', form=form)
+
+@app.route("/logout", methods=['GET', 'POST'])
+@login_required
+def logout():
+ logout_user()
+ return redirect('/')
+
+@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
+
+ 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()
+ return redirect(url_for('login'))
+ else:
+ flash("User already exists", "danger")
+
+ return render_template('user/register.html', form=form)
+