left4me/l4d2web/routes
mwiegand 47722dbb19
profile: happy-path + cross-session invalidation tests
Verifies that on a successful change the digest rotates, the
password_changed_at advances, this session keeps working with the
re-stamped marker, and a parallel session forged from the
pre-change marker is rejected by load_current_user.

profile_password_change now writes a naive password_changed_at so
the in-memory marker matches what SQLite returns on next read.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 21:58:26 +02:00
..
__init__.py chore(l4d2): flatten component layout 2026-05-05 23:47:06 +02:00
auth_routes.py auth: stamp password_changed_at marker in session on login 2026-05-11 21:46:20 +02:00
blueprint_routes.py feat(l4d2-web): blueprint rename moves to footer modal — matches overlay/server pattern 2026-05-09 01:37:29 +02:00
files_routes.py feat(files-overlay): user-managed file content as a third overlay type 2026-05-09 18:59:32 +02:00
job_routes.py feat(l4d2-web): managed global map overlays with daily refresh 2026-05-08 08:05:14 +02:00
log_routes.py feat(l4d2-web): server identity by id, name as display label 2026-05-08 19:22:09 +02:00
overlay_routes.py feat(files-overlay): user-managed file content as a third overlay type 2026-05-09 18:59:32 +02:00
page_routes.py admin: deactivate/activate/delete endpoints for /admin/users 2026-05-10 21:15:52 +02:00
profile_routes.py profile: happy-path + cross-session invalidation tests 2026-05-11 21:58:26 +02:00
server_routes.py refactor(l4d2-web): detail-page UI — single panel, soft border, footer Delete 2026-05-09 01:26:57 +02:00
workshop_routes.py feat(l4d2-web): per-overlay job list + redirect to job after build-triggering edits 2026-05-08 17:44:22 +02:00