auth.py
Ricky/cat_project/backend/app/admin/auth.py
from flask import Blueprint, request, render_template, redirect, url_for, session, current_app
from werkzeug.security import check_password_hash
from ..services.storage import Storage
bp = Blueprint("admin", __name__, url_prefix="/admin")
@bp.get("/login")
def login():
return render_template("admin/login.html")
@bp.post("/login")
def login_post():
email = (request.form.get("email") or "").strip().lower()
password = request.form.get("password") or ""
store = Storage(current_app.config["SQLITE_PATH"])
user = store.get_user_by_email(email)
if not user or not check_password_hash(user["password_hash"], password):
return render_template(
"admin/login.html",
error="Invalid credentials"
)
# ✅ 關鍵:建立 admin session
session["admin_user"] = {
"id": user["id"],
"email": user["email"],
"role": user["role"],
}
return redirect(url_for("admin.dashboard"))
@bp.get("/logout")
def logout():
session.pop("admin_user", None)
return redirect(url_for("admin.login"))
Bài viết liên quan
__init__.py
__init__.py — python source code from the Ricky learning materials (Ricky/Cat Project Final/back_web-4/app/__init__.py).
Đọc bài viết →auth.py
auth.py — python source code from the Ricky learning materials (Ricky/Cat Project Final/back_web-4/app/admin/auth.py).
Đọc bài viết →routes.py
routes.py — python source code from the Ricky learning materials (Ricky/Cat Project Final/back_web-4/app/admin/routes.py).
Đọc bài viết →config.py
config.py — python source code from the Ricky learning materials (Ricky/Cat Project Final/back_web-4/app/config.py).
Đọc bài viết →admin_ingest.py
admin_ingest.py — python source code from the Ricky learning materials (Ricky/Cat Project Final/back_web-4/app/routes/admin_ingest.py).
Đọc bài viết →admin_stats.py
admin_stats.py — python source code from the Ricky learning materials (Ricky/Cat Project Final/back_web-4/app/routes/admin_stats.py).
Đọc bài viết →