Andrey Antukh e6983a1e4e
✨ Enforce idle and absolute session expiration (#11654)
* ✨ Enforce idle and absolute session expiration

Sessions now expire on two server-side conditions: an idle window
(PENPOT_AUTH_TOKEN_COOKIE_MAX_AGE, default 7d) and an absolute cap
from creation (PENPOT_AUTH_TOKEN_COOKIE_MAX_AGE_ABSOLUTE, default
30d, enforced by the token :exp claim). The daily session-gc task
deletes rows that exceed either window, so idle sessions can no
longer be replayed and active sessions are not deleted at the idle
window.

Also remove the legacy v1 HTTP sessions: the http_session table and
the string-id / :ver 0 token code paths are gone. Any v1 cookie now
requires a fresh login.

Document the session expiration configuration in the technical guide
and add a backend memory describing the token, renewal and GC model.

Closes #11646

AI-assisted-by: deepseek-v4.1-flash

* 🐛 Address session-expiration review findings F1-F4

Fix the unreadable test (a stray paren broke whole-suite
discovery), enforce idle expiration on every request in
wrap-authz, fail boot fast when the absolute cap sits below
the idle window, and align config defaults with the memory
rule while fixing its migration number and stale reference.

Closes #11646

AI-assisted-by: muse-spark-1.3-contributor
2026-10-01 10:12:05 +02:00
..
2024-10-30 13:30:02 +01:00
2024-10-30 13:30:02 +01:00
2024-10-30 13:30:02 +01:00
2026-09-22 10:22:31 +02:00
2025-10-28 11:04:09 +01:00
2024-10-30 13:30:02 +01:00
2024-10-30 13:30:02 +01:00
2024-10-30 13:30:02 +01:00
2024-10-30 13:30:02 +01:00
2024-10-30 13:30:02 +01:00
2026-09-29 09:07:34 +02:00
2026-09-29 09:07:34 +02:00
2026-09-29 09:07:34 +02:00
2026-09-22 10:22:31 +02:00
2024-10-30 13:30:02 +01:00

Penpot Docs

Penpot documentation website.

Usage

To view this site locally, first set up the environment:

# only if necessary
nvm install
nvm use

pnpm install

And launch a development server:

pnpm start

You can then point a browser to http://localhost:8080.

Tooling