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")
|
flash("Invalid username or password.", "error")
|
||||||
return render_template("login.html")
|
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.clear()
|
||||||
session["user_id"] = user["id"]
|
session["user_id"] = user["id"]
|
||||||
session["username"] = user["username"]
|
session["username"] = user["username"]
|
||||||
session["is_admin"] = bool(user["is_admin"])
|
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"
|
session["household_name"] = household["name"] if household else "Unknown"
|
||||||
return redirect(url_for("meals.dashboard"))
|
return redirect(url_for("meals.dashboard"))
|
||||||
|
|
||||||
|
|||||||
@@ -18,12 +18,13 @@ meals_bp = Blueprint("meals", __name__)
|
|||||||
|
|
||||||
|
|
||||||
def login_required(f):
|
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
|
from functools import wraps
|
||||||
|
|
||||||
@wraps(f)
|
@wraps(f)
|
||||||
def wrapper(*args, **kwargs):
|
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 redirect(url_for("auth.login"))
|
||||||
return f(*args, **kwargs)
|
return f(*args, **kwargs)
|
||||||
|
|
||||||
@@ -51,6 +52,10 @@ def dashboard():
|
|||||||
except ValueError:
|
except ValueError:
|
||||||
flash("Invalid date format. Use YYYY-MM-DD.", "error")
|
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)
|
data = get_dashboard_data(today, household_id)
|
||||||
return render_template(
|
return render_template(
|
||||||
"dashboard.html",
|
"dashboard.html",
|
||||||
|
|||||||
Reference in New Issue
Block a user