05/04 Fix url_for issue, adjust session lifetime

This commit is contained in:
2026-05-04 21:42:33 -04:00
parent a4405e2aa0
commit 1960e84d4e
2 changed files with 20 additions and 8 deletions
+13
View File
@@ -225,6 +225,19 @@ def create_app() -> Flask:
# Request / response hooks # Request / response hooks
# ------------------------------------------------------------------ # ------------------------------------------------------------------
@app.before_request
def adjust_session_lifetime():
"""
Dynamically set session lifetime based on the 'remember_me' flag stored
in the session. When the user chose 'Remember Me' at login, their
permanent session lives for 30 days; otherwise the default 10-hour
lifetime from Config.PERMANENT_SESSION_LIFETIME applies.
"""
if session.get('remember_me'):
app.permanent_session_lifetime = timedelta(days=30)
else:
app.permanent_session_lifetime = timedelta(hours=10)
@app.before_request @app.before_request
def log_request_info(): def log_request_info():
"""Record request start time and scan for suspicious user agents""" """Record request start time and scan for suspicious user agents"""
+7 -8
View File
@@ -1,4 +1,3 @@
""" """
utils/helpers.py utils/helpers.py
================ ================
@@ -17,7 +16,7 @@ from datetime import datetime, date, time, timedelta
from functools import wraps from functools import wraps
import qrcode import qrcode
from flask import session, redirect, flash, request from flask import session, redirect, flash, request, url_for
from user_agents import parse from user_agents import parse
from extensions import logger_handler from extensions import logger_handler
@@ -141,7 +140,7 @@ def login_required(f):
def decorated_function(*args, **kwargs): def decorated_function(*args, **kwargs):
if 'user_id' not in session: if 'user_id' not in session:
flash('Please log in to access this page.', 'error') flash('Please log in to access this page.', 'error')
return redirect(url_for('login')) return redirect(url_for('auth.login'))
return f(*args, **kwargs) return f(*args, **kwargs)
return decorated_function return decorated_function
@@ -152,11 +151,11 @@ def admin_required(f):
def decorated_function(*args, **kwargs): def decorated_function(*args, **kwargs):
if 'username' not in session: if 'username' not in session:
flash('Please log in to access this page.', 'error') flash('Please log in to access this page.', 'error')
return redirect(url_for('login')) return redirect(url_for('auth.login'))
user_role = session.get('role') user_role = session.get('role')
if not has_admin_privileges(user_role): if not has_admin_privileges(user_role):
flash('Administrator privileges required for this action.', 'error') flash('Administrator privileges required for this action.', 'error')
return redirect(url_for('dashboard')) return redirect(url_for('dashboard.dashboard'))
return f(*args, **kwargs) return f(*args, **kwargs)
return decorated_function return decorated_function
@@ -167,11 +166,11 @@ def staff_or_admin_required(f):
def decorated_function(*args, **kwargs): def decorated_function(*args, **kwargs):
if 'username' not in session: if 'username' not in session:
flash('Please log in to access this page.', 'error') flash('Please log in to access this page.', 'error')
return redirect(url_for('login')) return redirect(url_for('auth.login'))
user_role = session.get('role') user_role = session.get('role')
if not (has_admin_privileges(user_role) or has_staff_level_access(user_role)): if not (has_admin_privileges(user_role) or has_staff_level_access(user_role)):
flash('Insufficient privileges to access this page.', 'error') flash('Insufficient privileges to access this page.', 'error')
return redirect(url_for('dashboard')) return redirect(url_for('dashboard.dashboard'))
return f(*args, **kwargs) return f(*args, **kwargs)
return decorated_function return decorated_function
@@ -372,4 +371,4 @@ def format_time_interval(minutes):
if remaining_hours == 0: if remaining_hours == 0:
return f"{days} day{'s' if days != 1 else ''}" return f"{days} day{'s' if days != 1 else ''}"
else: else:
return f"{days}d {remaining_hours}h" return f"{days}d {remaining_hours}h"