Fix: handle stale sessions and migrated users without household_id
This commit is contained in:
@@ -31,13 +31,14 @@ def login():
|
||||
flash("Invalid username or password.", "error")
|
||||
return render_template("login.html")
|
||||
|
||||
household = get_household_by_id(user["household_id"])
|
||||
household_id = user["household_id"]
|
||||
household = get_household_by_id(household_id) if household_id else None
|
||||
|
||||
session.clear()
|
||||
session["user_id"] = user["id"]
|
||||
session["username"] = user["username"]
|
||||
session["is_admin"] = bool(user["is_admin"])
|
||||
session["household_id"] = user["household_id"]
|
||||
session["household_id"] = household_id
|
||||
session["household_name"] = household["name"] if household else "Unknown"
|
||||
return redirect(url_for("meals.dashboard"))
|
||||
|
||||
|
||||
@@ -18,12 +18,13 @@ meals_bp = Blueprint("meals", __name__)
|
||||
|
||||
|
||||
def login_required(f):
|
||||
"""Decorator: redirect to login if not authenticated."""
|
||||
"""Decorator: redirect to login if not authenticated or session is stale."""
|
||||
from functools import wraps
|
||||
|
||||
@wraps(f)
|
||||
def wrapper(*args, **kwargs):
|
||||
if "user_id" not in session:
|
||||
if "user_id" not in session or "household_id" not in session:
|
||||
session.clear()
|
||||
return redirect(url_for("auth.login"))
|
||||
return f(*args, **kwargs)
|
||||
|
||||
@@ -51,6 +52,10 @@ def dashboard():
|
||||
except ValueError:
|
||||
flash("Invalid date format. Use YYYY-MM-DD.", "error")
|
||||
|
||||
if household_id is None:
|
||||
session.clear()
|
||||
return redirect(url_for("auth.login"))
|
||||
|
||||
data = get_dashboard_data(today, household_id)
|
||||
return render_template(
|
||||
"dashboard.html",
|
||||
|
||||
Reference in New Issue
Block a user