husstanden/routes.py

83 lines
2.4 KiB
Python
Raw Normal View History

2019-04-26 03:28:27 +02:00
from flask import render_template, url_for, request, redirect, flash, abort
from wtforms import Form, BooleanField, StringField, PasswordField, validators
import flask_login
2019-04-26 05:20:31 +02:00
from forms.login import LoginForm, RegisterForm, User, register_account
2019-04-26 03:28:27 +02:00
2019-02-12 16:59:43 +01:00
from objects import glob # Global sharing of python objects in a manageable way
2019-04-26 03:28:27 +02:00
login_manager = flask_login.LoginManager()
login_manager.init_app(glob.app)
login_manager.login_view = "login"
logged_in_users = []
2019-02-12 17:09:43 +01:00
@glob.app.route("/")
@glob.app.route("/home")
2019-04-25 22:17:26 +02:00
@glob.app.route("/dashboard")
2019-04-26 03:28:27 +02:00
@flask_login.login_required
def dashboard():
2019-04-25 22:17:26 +02:00
return render_template("pages/dashboard.html")
2019-02-25 16:29:35 +01:00
2019-03-02 23:41:16 +01:00
@glob.app.route("/login", methods = ["GET", "POST"])
2019-04-26 03:28:27 +02:00
def login():
if flask_login.current_user.is_authenticated:
2019-04-26 03:53:37 +02:00
flash("Already logged in", "info")
2019-04-26 03:28:27 +02:00
return redirect(url_for("dashboard"))
form = LoginForm(request.form)
if request.method == "POST" and form.validate():
2019-04-26 04:52:54 +02:00
try:
user = User((form.email.data, form.password.data))
except Exception as e:
flash(str(e), "danger")
2019-04-26 03:28:27 +02:00
return render_template("login.html", form=form)
flask_login.login_user(user)
logged_in_users.append(user)
2019-04-26 03:53:37 +02:00
flash("Logged in", "success")
2019-04-26 03:28:27 +02:00
return redirect(url_for("dashboard"))
return render_template("login.html", form=form)
2019-04-26 05:20:31 +02:00
@glob.app.route("/register", methods = ["GET", "POST"])
def register():
if flask_login.current_user.is_authenticated:
flash("Already logged in", "info")
return redirect(url_for("dashboard"))
form = RegisterForm(request.form)
if request.method == "POST" and form.validate():
try:
register_account(form.email.data, form.password.data, form.firstname.data, form.surname.data)
except Exception as e:
flash(str(e), "danger")
return render_template("register.html", form=form)
flash("User registered", "success")
return redirect(url_for("login"))
return render_template("register.html", form=form)
2019-04-26 03:28:27 +02:00
@glob.app.route("/logout")
@flask_login.login_required
def logout():
flask_login.logout_user()
2019-04-26 03:53:37 +02:00
flash("Logged out", "success")
2019-04-26 03:28:27 +02:00
return redirect(url_for("login"))
@glob.app.errorhandler(401)
def unauthorized_handler_err():
2019-04-26 03:53:37 +02:00
flash("Login is required", "danger")
2019-04-26 03:28:27 +02:00
unauthorized_handler()
@login_manager.user_loader
def load_user(uuid):
2019-04-26 04:52:54 +02:00
uuid = int(uuid)
lst = [x for x in logged_in_users if x.id == uuid]
return lst[0] if len(lst) > 0 else None
2019-04-26 03:28:27 +02:00
@login_manager.unauthorized_handler
def unauthorized_handler():
return redirect(url_for("login"))
2019-03-02 23:41:16 +01:00