This commit is contained in:
2021-07-14 01:32:23 +03:00
commit af5478994c
14 changed files with 313 additions and 0 deletions

70
dyxless/auth.py Normal file
View File

@@ -0,0 +1,70 @@
from flask import Blueprint, render_template, redirect, url_for, request, flash
from werkzeug.security import generate_password_hash, check_password_hash
from flask_login import current_user, login_user, logout_user
from .models import User
from . import db
auth = Blueprint("auth", __name__)
@auth.route("/login", methods=["GET", "POST"])
def login():
if current_user.is_authenticated:
return redirect(url_for("main.index"))
elif request.method == "GET":
return render_template("login.html")
elif request.method == "POST":
email = request.form.get("email")
password = request.form.get("password")
remember = True if request.form.get("remember") else False
user = User.query.filter_by(email=email).first()
if not user or not check_password_hash(user.password, password):
flash("Please check your login details and try again.")
return redirect(url_for("auth.login"))
login_user(user, remember=remember)
return redirect(url_for("main.profile"))
@auth.route("/signup", methods=["GET", "POST"])
def signup():
if current_user.is_authenticated:
return redirect(url_for("main.index"))
elif request.method == "GET":
return render_template("signup.html")
elif request.method == "POST":
email = request.form.get("email")
name = request.form.get("name")
password = request.form.get("password")
user = User.query.filter_by(email=email).first()
if user:
flash("Email address already exists")
return redirect(url_for("auth.signup"))
new_user = User(
email=email,
name=name,
password=generate_password_hash(password, method="sha256"),
)
db.session.add(new_user)
db.session.commit()
return redirect(url_for("auth.login"))
@auth.route("/logout")
def logout():
logout_user()
return redirect(url_for("main.index"))