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")