From b339f73bbc55d9a07cb7a31f38b1a4645984632d Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 18 Aug 2026 19:01:39 +0200 Subject: [PATCH] Document password validation fork and PHP 8.4 requirement Co-Authored-By: Claude Opus 5 --- AI_HANDOVER.md | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/AI_HANDOVER.md b/AI_HANDOVER.md index f32b8f9..dd180ce 100644 --- a/AI_HANDOVER.md +++ b/AI_HANDOVER.md @@ -516,6 +516,39 @@ Contao verschickt die Passwort-Mail über `OptInToken::send()` und setzt dort au - **Wichtig (Stolperfalle):** Mails können auch aus einem CLI-Worker heraus verschickt werden. Dort gibt es keinen Request, aus dem der Translator eine Sprache ableiten könnte, und `kernel.default_locale` ist in Contao standardmäßig `en`. Der Listener liest die Sprache deshalb aus der Fallback-Startseite (`tl_page.type = 'root' AND fallback = '1'`), sonst wechselt der Text je nach Versandweg zwischen Deutsch und Englisch. - Die Absender-/Footerdaten stehen direkt im Template, die übrigen Texte unter `survey.email.*` in den Übersetzungsdateien. +## Passwort-Policy: terminal42/contao-password-validation + +Installiert, aber **bewusst noch nicht konfiguriert**. Die Konfiguration +`terminal42_password_validation` ist leer, alle Listener der Erweiterung steigen +über `hasConfiguration()` früh aus. + +Wichtig: Die Erweiterung läuft als **Fork** unter `packages/contao-password-validation`, +eingebunden als Path-Repository in der Projekt-`composer.json`. Begründung und +Upstream-Abgleich stehen in `packages/contao-password-validation/FORK.md`. + +Kurzfassung: Upstream verlangt `doctrine/dbal ^3.3` und `paragonie/hidden-string ^1.0`. +Ohne Fork zwingt Composer die Installation zu Downgrades (DBAL 4 → 3, +`constant_time_encoding` 3 → 2). Beide Constraints sind sachlich nicht nötig – die +einzige echte DBAL-4-Inkompatibilität war ein `QueryBuilder::execute()`. + +Datenbankfelder, die die Erweiterung angelegt hat: + +- `tl_password_history` (neue Tabelle) +- `tl_member.pwChange` +- `tl_page.pwChangePage` + +Stolperfalle: Direkt nach `composer require` liefert das **Frontend 500** +(`Unknown column 'j1.pwChangePage'`), weil die DCA-Felder vor der Migration noch +nicht in der Datenbank stehen. `contao:migrate` behebt das. + +## Plattformanforderung PHP 8.4 + +Seit dem Update vom 18.08.2026 zieht `symfony/serializer` 8.0 die +Plattformanforderung des Projekts auf **PHP >= 8.4.1**. `php8.3` kann die +Contao-Konsole nicht mehr starten (`platform_check.php` bricht ab). Für +Konsolenbefehle `php` (8.5) oder `/usr/bin/php8.4` verwenden; der Contao Manager +ist in `contao-manager/manager.json` bereits auf `/usr/bin/php8.4` gesetzt. + ## Wichtige Dateien nach Themengebiet Frontend-Liste: