add register, login and main page with basic functionality
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
from flask import Blueprint, render_template, request, redirect, url_for, session, flash
|
||||
from app.db import get_db
|
||||
from werkzeug.security import generate_password_hash, check_password_hash
|
||||
|
||||
auth_bp = Blueprint("auth", __name__)
|
||||
|
||||
@auth_bp.route("/login", methods=["GET", "POST"])
|
||||
def login():
|
||||
if request.method == "POST":
|
||||
username = request.form["username"]
|
||||
password = request.form["password"]
|
||||
|
||||
db = get_db()
|
||||
user = db.execute("SELECT * FROM users WHERE username = ?", (username,)).fetchone()
|
||||
|
||||
if user and check_password_hash(user["password"], password):
|
||||
session["user_id"] = user["id"]
|
||||
return redirect(url_for("main.main"))
|
||||
else:
|
||||
flash("Invalid username or password")
|
||||
|
||||
return render_template("login.html")
|
||||
|
||||
|
||||
@auth_bp.route("/register", methods=["GET", "POST"])
|
||||
def register():
|
||||
if request.method == "POST":
|
||||
username = request.form.get("username")
|
||||
password = request.form.get("password")
|
||||
|
||||
if not username or not password:
|
||||
flash("Please fill out all fields")
|
||||
return render_template("register.html")
|
||||
|
||||
db = get_db()
|
||||
|
||||
existing_user = db.execute(
|
||||
"SELECT id FROM users WHERE username = ?",
|
||||
(username,)
|
||||
).fetchone()
|
||||
|
||||
if existing_user:
|
||||
flash("Username already taken")
|
||||
return render_template("register.html")
|
||||
|
||||
hashed_password = generate_password_hash(password)
|
||||
|
||||
db.execute(
|
||||
"INSERT INTO users (username, password) VALUES (?, ?)",
|
||||
(username, hashed_password)
|
||||
)
|
||||
db.commit()
|
||||
|
||||
flash("Account created! Please log in.")
|
||||
return redirect(url_for("auth.login"))
|
||||
|
||||
return render_template("register.html")
|
||||
Reference in New Issue
Block a user