Skip to content

Commit 79c0e84

Browse files
committed
fix: load reverse proxy user before ensure_db_session
1 parent 2225310 commit 79c0e84

1 file changed

Lines changed: 18 additions & 22 deletions

File tree

cps/__init__.py

Lines changed: 18 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,24 @@ def _cwa_ensure_db_session():
248248
from sqlalchemy import or_
249249
import time
250250

251+
if config.config_allow_reverse_proxy_header_login:
252+
"""
253+
Load user from reverse proxy authentication header if configured.
254+
Sets g.flask_httpauth_user early so that current_user proxy resolves correctly
255+
for user-specific settings like theme preferences.
256+
257+
This must run before any blueprint before_request handlers that access current_user.
258+
"""
259+
260+
from flask import g, request
261+
from . import usermanagement
262+
user = usermanagement.load_user_from_reverse_proxy_header(request)
263+
if user:
264+
g.flask_httpauth_user = user
265+
else:
266+
# Explicitly set to None to indicate we checked but found nothing
267+
g.flask_httpauth_user = None
268+
251269
if current_user.is_authenticated:
252270
try:
253271
# Verify required tables exist before querying
@@ -358,28 +376,6 @@ def shutdown_session(exception=None):
358376
if calibre_db.session_factory:
359377
calibre_db.session_factory.remove()
360378

361-
# Load user from reverse proxy header early in request lifecycle
362-
# This ensures current_user resolves correctly before any code accesses user settings
363-
@app.before_request
364-
def _load_reverse_proxy_user():
365-
"""
366-
Load user from reverse proxy authentication header if configured.
367-
Sets g.flask_httpauth_user early so that current_user proxy resolves correctly
368-
for user-specific settings like theme preferences.
369-
370-
This must run before any blueprint before_request handlers that access current_user.
371-
"""
372-
from flask import g, request
373-
374-
if config.config_allow_reverse_proxy_header_login:
375-
from . import usermanagement
376-
user = usermanagement.load_user_from_reverse_proxy_header(request)
377-
if user:
378-
g.flask_httpauth_user = user
379-
else:
380-
# Explicitly set to None to indicate we checked but found nothing
381-
g.flask_httpauth_user = None
382-
383379
from .schedule import register_scheduled_tasks, register_startup_tasks
384380
register_scheduled_tasks(config.schedule_reconnect)
385381
register_startup_tasks()

0 commit comments

Comments
 (0)