39 lines
1.3 KiB
Python
39 lines
1.3 KiB
Python
from flask import Blueprint, render_template, request, redirect, url_for, flash
|
|
from flask_login import login_user, logout_user, login_required, current_user
|
|
from models import db
|
|
from models import User
|
|
from log import Log
|
|
|
|
auth_bp = Blueprint("auth", __name__)
|
|
|
|
#. @auth_bp.route("/", methods=["GET", "POST"])
|
|
@auth_bp.route("/login", methods=["GET", "POST"])
|
|
def login():
|
|
if request.method == "POST":
|
|
user = User.query.filter_by(name=request.form["name"]).first()
|
|
if user and user.check_password(request.form["password"]):
|
|
if not user.is_approved:
|
|
return render_template("pending.html")
|
|
login_user(user)
|
|
return redirect(url_for("lists.home"))
|
|
flash("Invalid credentials")
|
|
Log.info(f"Authorization failure for user '{request.form["name"]}' ")
|
|
return render_template("login.html")
|
|
|
|
@auth_bp.route("/register", methods=["GET", "POST"])
|
|
def register():
|
|
if request.method == "POST":
|
|
user = User(name=request.form["name"])
|
|
user.set_password(request.form["password"])
|
|
db.session.add(user)
|
|
db.session.commit()
|
|
return render_template("pending.html")
|
|
return render_template("register.html")
|
|
|
|
@auth_bp.route("/logout")
|
|
@login_required
|
|
def logout():
|
|
logout_user()
|
|
return redirect(url_for("auth.login"))
|
|
|