mandrael / contao-confirm-member-email-change
Bestätigt die Änderung der E-Mail-Adresse eines Frontend-Mitglieds per Double-Opt-In-Link (Contao 5.3+).
Package info
github.com/mandrael/contao-confirm-member-email-change
Type:contao-bundle
pkg:composer/mandrael/contao-confirm-member-email-change
Requires
- php: ^8.1
- contao/core-bundle: ^5.3
- symfony/config: ^6.4 || ^7.0
- symfony/dependency-injection: ^6.4 || ^7.0
- symfony/http-foundation: ^6.4 || ^7.0
- symfony/http-kernel: ^6.4 || ^7.0
- symfony/routing: ^6.4 || ^7.0
- symfony/security-bundle: ^6.4 || ^7.0
- symfony/translation-contracts: ^2.5 || ^3.0
Requires (Dev)
- contao/manager-plugin: ^2.0
- contao/test-case: ^5.0
- phpstan/phpstan: ^2.0
- phpunit/phpunit: ^11.5 || ^12.4
Suggests
- heimrichhannot/contao-email2username-bundle: Alternative für Login mit der E-Mail-Adresse; ebenfalls voll kompatibel (entweder/oder zu terminal42, nicht beide).
- terminal42/contao-mailusername: Login mit der E-Mail-Adresse als Benutzername; dieses Bundle hält den Benutzernamen bei einer bestätigten E-Mail-Änderung synchron (empfohlen).
Provides
None
Conflicts
- contao/manager-plugin: <2.0
Replaces
None
README
🇩🇪 Deutsch | 🇬🇧 English
Contao: E-Mail-Änderung bestätigen (Double-Opt-In)
Bestätigt die Änderung der E-Mail-Adresse eines Frontend-Mitglieds (tl_member) im
Profil per Double-Opt-In-Link: Die neue Adresse wird erst nach Klick auf einen
Bestätigungslink wirksam. Schließt eine vom Contao-Kernteam selbst anerkannte Lücke
(contao/contao#258).
Erstes 5.3-only-Bundle: durchgängig moderne Contao-/Symfony-Features (
AbstractBundle, Attribut-DI), kein 4.13-Ballast.
Das Wichtigste in Kürze
- Problem: Contao speichert eine im Profil geänderte E-Mail direkt, ohne Bestätigung. Bei E-Mail-als-Login (siehe unten) ist das eine stille Identitäts-Übernahme bzw. ein Self-Lockout per Tippfehler.
- Lösung: Die Änderung wird abgefangen, ein Bestätigungslink an die neue Adresse
gesendet, die alte Adresse benachrichtigt;
tl_member.emailändert sich erst nach Bestätigung. - Scope: nur Frontend-Members, nur der Änderungs-Fall (die Registrierung ist im Core bereits per Account-Aktivierung bestätigt). Backend/Import bleiben unangetastet.
- Prinzip: maximal Contao-/Symfony-Core nutzen (Core-
OptIn-Service), minimal Custom-Code.
So funktioniert es
- Mitglied ändert im Profil seine E-Mail-Adresse.
- Ein
fields.email.save-Callback (hohe Priorität) fängt die Änderung ab, erstellt einen Core-OptIn-Token und sendet einen Bestätigungslink an die neue Adresse. Die alte Adresse erhält eine Sicherheits-Benachrichtigung. Im Profil bleibt die alte Adresse sichtbar (kein Lockout, Login unverändert möglich) — mit einem deutlichen grünen Hinweis, dass die Änderung noch bestätigt werden muss. - Mitglied öffnet den Link → ein schlanker Controller bestätigt den Token, schreibt die neue Adresse und – falls eine E-Mail-als-Username-Erweiterung aktiv ist – zieht den Benutzernamen mit. Es folgt eine kurze Bestätigungsseite; bei aktivem E-Mail-Login wird das Mitglied abgemeldet und meldet sich mit der neuen Adresse neu an.
Installation
composer require mandrael/contao-confirm-member-email-change
Das Bundle registriert sich über den Contao Manager Plugin automatisch — keine weitere Konfiguration nötig. Nach dem Klick auf den Bestätigungslink sieht das Mitglied eine kurze Bestätigungsseite. Ist ein E-Mail-Login aktiv (siehe unten), wird es dabei abgemeldet und meldet sich anschließend mit der neuen Adresse an.
Technischer Hinweis: Die Mails werden über den Symfony Mailer (
Contao\Email) versendet. Ist der Mailer — wie im Contao-Standard-Setup — an den Messenger angebunden, laufen sie asynchron über die Queue; dann muss ein Worker laufen (contao:workerbzw.messenger:consume), sonst bleiben die Mails liegen. Bei synchronem Mailer-Transport entfällt das.
Kompatibilität: E-Mail als Benutzername
Es gilt entweder/oder – beide Erweiterungen lösen dieselbe Aufgabe und werden nicht gemeinsam installiert:
| Erweiterung | Verhalten mit diesem Bundle |
|---|---|
| terminal42/contao-mailusername (empfohlen) | Reiner Sync username = email. Beim Bestätigen wird der Benutzername verbatim mitgezogen (sonst bräche der Login mit der neuen Adresse). |
| heimrichhannot/contao-email2username-bundle | Sync + Login-Decorator. Login funktioniert ohnehin; der Benutzername wird kosmetisch (lowercase) mitgezogen. |
Ohne eine solche Erweiterung bleibt tl_member.username unangetastet.
Kompatibilität
| Version | |
|---|---|
| Contao | ^5.3 (5.3 LTS … 5.7 LTS) |
| PHP | ^8.1 |
| Symfony | ^6.4 || ^7.0 |
Lizenz
MIT