new file: .gitignore new file: Dockerfile new file: README.md new file: app.py new file: auth.py new file: config.py new file: db.py new file: db_helpers.py new file: docker-compose.yml new file: requirements.txt new file: routes/__init__.py new file: routes/admin_routes.py new file: routes/auth_routes.py new file: routes/journal_routes.py new file: static/css/style.css new file: static/js/main.js new file: templates/admin/dashboard.html new file: templates/admin/users.html new file: templates/base.html new file: templates/day.html new file: templates/future.html new file: templates/index.html new file: templates/login.html new file: templates/week.html
36 lines
1.2 KiB
Python
36 lines
1.2 KiB
Python
"""Auth-Routen: Login und Logout."""
|
|
from flask import Blueprint, render_template, request, redirect, url_for, session, flash
|
|
|
|
from auth import verify_password
|
|
from db_helpers import get_user_by_username
|
|
|
|
auth_bp = Blueprint("auth", __name__)
|
|
|
|
|
|
@auth_bp.route("/login", methods=["GET", "POST"])
|
|
def login():
|
|
if request.method == "POST":
|
|
username = request.form.get("username", "").strip()
|
|
password = request.form.get("password", "")
|
|
|
|
user = get_user_by_username(username)
|
|
if user and verify_password(password, user["salt"], user["password_hash"]):
|
|
session.clear()
|
|
session["user_id"] = user["id"]
|
|
session["username"] = user["username"]
|
|
session["is_admin"] = bool(user["is_admin"])
|
|
flash(f"Willkommen, {user['username']}!", "success")
|
|
if user["is_admin"]:
|
|
return redirect(url_for("admin.dashboard"))
|
|
return redirect(url_for("journal.index"))
|
|
flash("Ungültiger Benutzername oder Passwort.", "danger")
|
|
|
|
return render_template("login.html")
|
|
|
|
|
|
@auth_bp.route("/logout", methods=["POST"])
|
|
def logout():
|
|
session.clear()
|
|
flash("Du wurdest abgemeldet.", "info")
|
|
return redirect(url_for("auth.login"))
|