refactor(session): swap the facade implementation to HttpFoundation
The session facade now wraps Symfony\Component\HttpFoundation\Session instead of
reading and writing the root of $_SESSION. Session data of existing installs stops
being readable, so every visitor is logged out once — noted in CHANGELOG.md together
with the loss of dot notation in the facade API.
- SessionFactory picks the storage by runtime: native under HTTP, in-memory under
CONSOLE_MODE, so cron runs and console commands no longer open a real PHP session
and leave sess_* files behind. The service is registered explicitly in
system/config/services.php instead of being autowired from a default argument.
- The session is started explicitly in the web bootstrap, before anything reads a key:
a read starts it implicitly, and the translator factory reads 'lng' during boot.
Kernel::handle() keeps an idempotent start() as the per-request entry point.
- Csrf keeps its tokens in one nested array: the facade stores flat keys.
- Session::invalidate() added and used on logout — clear() kept the old session id valid.
- Tests drive the session through its API on in-memory storage.
reading and writing the root of $_SESSION. Session data of existing installs stops
being readable, so every visitor is logged out once — noted in CHANGELOG.md together
with the loss of dot notation in the facade API.
- SessionFactory picks the storage by runtime: native under HTTP, in-memory under
CONSOLE_MODE, so cron runs and console commands no longer open a real PHP session
and leave sess_* files behind. The service is registered explicitly in
system/config/services.php instead of being autowired from a default argument.
- The session is started explicitly in the web bootstrap, before anything reads a key:
a read starts it implicitly, and the translator factory reads 'lng' during boot.
Kernel::handle() keeps an idempotent start() as the per-request entry point.
- Csrf keeps its tokens in one nested array: the facade stores flat keys.
- Session::invalidate() added and used on logout — clear() kept the old session id valid.
- Tests drive the session through its API on in-memory storage.