M3 Mailversand und Public-Landingpage vorbereiten
- Mail-Transport fuer Reset- und Verifizierungslinks ergaenzen - Public-Landingpage mit Hero-Asset und App-CTAs bauen - Mail-Flow-Test, Smoke-Abdeckung und SaaS-Doku aktualisieren
This commit is contained in:
@@ -26,6 +26,12 @@ export DEV_AUTH_EMAIL="admin@test.local"
|
||||
export DEV_AUTH_NAME="Test Admin"
|
||||
# Optional: Standard ist var/sessions im Repository.
|
||||
export APP_SESSION_PATH="/path/to/writable/sessions"
|
||||
# Optional fuer Passwort-Reset und E-Mail-Verifikation.
|
||||
export APP_BASE_URL="http://127.0.0.1:8080"
|
||||
export APP_MAIL_TRANSPORT="log"
|
||||
export APP_MAIL_LOG_DIR="/path/to/writable/mail-log"
|
||||
export APP_MAIL_FROM="noreply@example.test"
|
||||
export APP_MAIL_FROM_NAME="Kaffeeliste"
|
||||
```
|
||||
|
||||
## Testdatenbank initialisieren
|
||||
@@ -63,6 +69,10 @@ der Port ueber die Ports-Ansicht weitergeleitet werden.
|
||||
## Hinweise
|
||||
|
||||
- Der Dev-Login umgeht AD/LDAP und nutzt `DEV_AUTH_EMAIL`.
|
||||
- Der Dev-Mailversand nutzt standardmaessig `APP_MAIL_TRANSPORT=log` und legt
|
||||
Nachrichten unter `var/mail` ab. Fuer Produktion kann zunaechst
|
||||
`APP_MAIL_TRANSPORT=mail` mit passendem `APP_BASE_URL` und Absender gesetzt
|
||||
werden; eine SMTP-/Provider-Anbindung bleibt ein spaeterer Betriebsausbau.
|
||||
- Die Tabellen werden ueber `database/migrations/` angelegt.
|
||||
- `database/mysql-dev-schema.sql` bleibt als historische Dev-Schema-Baseline
|
||||
erhalten; der aktive Weg ist `scripts/migrate.php`.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# M2 Technisches Fundament
|
||||
|
||||
Stand: 2026-07-12
|
||||
Stand: 2026-07-13
|
||||
|
||||
M2 fuehrt die technischen Grundbausteine fuer den SaaS-Umbau ein, ohne das
|
||||
Legacy-Verhalten oder das bestehende Design zu veraendern.
|
||||
@@ -140,7 +140,7 @@ Die Skripte erwarten die bekannten Dev-Umgebungsvariablen `DB_HOST`, `DB_NAME`,
|
||||
eine PayPal-Alias-Dublette und hinterlaesst keine Datei in `var/uploads`.
|
||||
- CSV-Upload negative Tests: Nicht-CSV-Dateien werden abgewiesen.
|
||||
- Golden Master weiterhin gruen mit 104 Assertions.
|
||||
- HTTP-Smoke weiterhin gruen mit 21 sicheren Seiten inklusive Login,
|
||||
- HTTP-Smoke weiterhin gruen mit 22 sicheren Seiten inklusive Landingpage, Login,
|
||||
Registrierung, Passwort-Reset, E-Mail-Verifikation und geschuetzter
|
||||
Mandant-Einstellungen sowie geschuetzter Mandantenauswahl.
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# M3 SaaS-Basis Vorbereitung
|
||||
|
||||
Stand: 2026-07-12
|
||||
Stand: 2026-07-13
|
||||
|
||||
M3 fuehrt Mandanten, Benutzer, Mitgliedschaften und Grundeinstellungen additiv
|
||||
ein. Die bestehende Legacy-App bleibt dabei lauffaehig und wird noch nicht auf
|
||||
@@ -53,6 +53,7 @@ scripts/check-m3-auth-flow.php
|
||||
scripts/check-m3-settings-flow.php
|
||||
scripts/check-m3-password-email-flow.php
|
||||
scripts/check-m3-tenant-resolution-flow.php
|
||||
scripts/check-m3-mail-flow.php
|
||||
```
|
||||
|
||||
Wichtige Regeln:
|
||||
@@ -122,6 +123,7 @@ Umgesetzte Dateien:
|
||||
```text
|
||||
app/database.php
|
||||
app/saas-auth.php
|
||||
app/saas-mail.php
|
||||
login.php
|
||||
register.php
|
||||
konto.php
|
||||
@@ -131,6 +133,8 @@ passwort-vergessen.php
|
||||
passwort-zuruecksetzen.php
|
||||
email-verifikation-senden.php
|
||||
email-verifizieren.php
|
||||
landing.php
|
||||
assets/images/landing-hero.png
|
||||
```
|
||||
|
||||
Umgesetzter Umfang:
|
||||
@@ -151,13 +155,33 @@ Umgesetzter Umfang:
|
||||
- Passwort-Reset erzeugt Single-Use-Tokens und speichert nur Token-Hashes.
|
||||
- E-Mail-Verifikation erzeugt Single-Use-Tokens und setzt
|
||||
`users.email_verified_at`.
|
||||
- Bis zum produktiven Mailversand werden Links nur im Dev-Modus angezeigt
|
||||
beziehungsweise in CLI-Checks direkt verwendet.
|
||||
- Reset- und Verifikationslinks werden ueber `app/saas-mail.php` versendet.
|
||||
Der Dev-Standard schreibt Mails nach `var/mail`; produktiv kann auf PHP
|
||||
`mail()` umgestellt werden.
|
||||
- Dev-Links werden weiterhin nur im Dev-Modus angezeigt, damit lokale Checks
|
||||
ohne echten Postausgang reproduzierbar bleiben.
|
||||
|
||||
Noch offen im M3-Auth-Scope:
|
||||
|
||||
- Weitergehende Rollenmatrix fuer spaetere SaaS-Seiten.
|
||||
- Produktiver Mailversand fuer Reset- und Verifikationslinks.
|
||||
- Produktive SMTP-/Provider-Anbindung inklusive Bounce-/Fehlerprotokoll.
|
||||
|
||||
## Public-Landingpage
|
||||
|
||||
Umgesetzte Dateien:
|
||||
|
||||
```text
|
||||
landing.php
|
||||
assets/images/landing-hero.png
|
||||
```
|
||||
|
||||
Umgesetzter Umfang:
|
||||
|
||||
- Oeffentliche Landingpage ohne Legacy-DB-Zugriff.
|
||||
- Hero mit generiertem Bild-Asset, bestehender Typografie und gruenem Akzent.
|
||||
- CTA zu Login und Registrierung.
|
||||
- Kurzabschnitt zu Stricherfassung, Mandantenfaehigkeit und Webspace-Betrieb.
|
||||
- Die geschuetzte App-Sidebar bleibt von der Public-Seite getrennt.
|
||||
|
||||
## Tenant-Aufloesung
|
||||
|
||||
@@ -212,7 +236,10 @@ Umgesetzter Umfang:
|
||||
- Owner-/Admin-Grundeinstellungen koennen aktualisiert werden: erfuellt.
|
||||
- Passwort-Reset und E-Mail-Verifikation funktionieren mit Single-Use-Tokens:
|
||||
erfuellt.
|
||||
- Reset- und Verifikationslinks werden im Dev-/Testmodus als Mail-Log erzeugt:
|
||||
erfuellt.
|
||||
- Mandantenauswahl funktioniert fuer User mit mehreren Mandanten: erfuellt.
|
||||
- Oeffentliche Landingpage ist per HTTP-Smoke erreichbar: erfuellt.
|
||||
- Golden-Master und HTTP-Smoke bleiben gruen: erfuellt.
|
||||
|
||||
## Risiken
|
||||
@@ -243,5 +270,7 @@ Umgesetzter Umfang:
|
||||
14. Mandantenauswahl und zentrale Session-Aufloesung bauen: erledigt.
|
||||
15. Tenant-Resolution-Kontrollskript schreiben: erledigt.
|
||||
16. Golden-Master und HTTP-Smoke ausfuehren: erledigt.
|
||||
17. Produktiven Mailversand oder Landingpage vorbereiten:
|
||||
17. Mail-Transport-Abstraktion und Mail-Flow-Kontrollskript bauen: erledigt.
|
||||
18. Public-Landingpage mit erstem Hero-Asset vorbereiten: erledigt.
|
||||
19. M3-Abschlusscheck dokumentieren und M4-Datenmigration starten:
|
||||
naechster Schritt.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# SaaS-Umstrukturierungsplan Kaffeeliste
|
||||
|
||||
Stand: 2026-07-11
|
||||
Stand: 2026-07-13
|
||||
|
||||
Dieses Dokument beschreibt den geplanten Umbau der bestehenden Kaffeelisten-App zu
|
||||
einer mehrkundenfaehigen SaaS-Anwendung mit oeffentlicher Landingpage,
|
||||
@@ -283,11 +283,11 @@ Uebersicht:
|
||||
| M0 | Baseline | Bestand, Sicherheit und Designreferenz sind dokumentiert |
|
||||
| M1 | Golden Master | Legacy-Ergebnisse sind als Vergleichsbasis eingefroren; HTTP-Smoke prueft sichere Seiten |
|
||||
| M2 | Technisches Fundament | Abgeschlossen: Migrationen, Bootstrap, Session, CSRF-Helper und Legacy-Schreibseitenschutz stehen |
|
||||
| M3 | SaaS-Basis | Tenants, User, Registrierung, Login und Rollen funktionieren |
|
||||
| M3 | SaaS-Basis | Tenants, User, Registrierung, Login, Rollen, Mail-Links und zentrale Mandantenauswahl funktionieren |
|
||||
| M4 | Datenmigration | Legacy-Daten sind tenant-sicher im Zielmodell abgebildet |
|
||||
| M5 | App-Kern | Dashboard, Striche, Einzahlungen, Mitglieder und Liste laufen |
|
||||
| M6 | Betriebsflows | Import, Export, Mail und Jahresprozesse sind auditierbar |
|
||||
| M7 | Landingpage | Werbliche Seite und Registrierung sind oeffentlich nutzbar |
|
||||
| M7 | Landingpage | Erste werbliche Seite ist oeffentlich nutzbar; spaetere Ausbaustufen folgen |
|
||||
| M8 | Haertung | Betrieb, Datenschutz, Monitoring und Isolation sind geprueft |
|
||||
| M9 | Cutover | Produktivumstellung ist vorbereitet und Legacy ist read-only |
|
||||
|
||||
@@ -421,16 +421,19 @@ Schritte:
|
||||
Flow erledigt.
|
||||
- Login und Logout bauen: erster Flow erledigt.
|
||||
- Passwort-Reset und E-Mail-Verifikation bauen: Dev-Flow mit Single-Use-Tokens
|
||||
erledigt.
|
||||
und Mail-Transport-Abstraktion erledigt.
|
||||
- Tenant-Aufloesung definieren: zentrale App-Domain mit Session-Kontext und
|
||||
Mandantenauswahl erledigt; feste Domains vorbereitet, keine Wildcards.
|
||||
- Rollenpruefung zentralisieren: erster Owner/Admin-Check erledigt.
|
||||
- Erste Admin-/Owner-Seite fuer Grundeinstellungen: erledigt.
|
||||
- Erste Public-Landingpage mit CTA zu Login und Registrierung: erledigt.
|
||||
|
||||
Ergebnis:
|
||||
|
||||
- Ein neuer Kunde kann sich registrieren und in seine eigene App gelangen.
|
||||
- Rollen und Tenant-Kontext sind serverseitig verfuegbar.
|
||||
- Reset- und Verifikationslinks koennen im Dev-Modus geloggt und produktiv ueber
|
||||
einen konfigurierten Mail-Transport versendet werden.
|
||||
|
||||
Abhaengigkeiten:
|
||||
|
||||
@@ -515,10 +518,11 @@ zu verwischen.
|
||||
|
||||
Schritte:
|
||||
|
||||
- Public-Layout mit bestehender Typografie und gruenem Akzent bauen.
|
||||
- Landingpage-Inhalte erstellen.
|
||||
- Public-Layout mit bestehender Typografie und gruenem Akzent bauen. Erster
|
||||
Stand als `landing.php` erledigt.
|
||||
- Landingpage-Inhalte erstellen. Erster Stand erledigt.
|
||||
- Demo-Screenshot oder Demo-Ansicht einbinden.
|
||||
- CTA zu Registrierung und Login.
|
||||
- CTA zu Registrierung und Login. Erledigt.
|
||||
- FAQ-Auszug strukturieren.
|
||||
- Keine App-Sidebar im Public-Bereich.
|
||||
|
||||
@@ -588,12 +592,12 @@ umgebaut werden.
|
||||
MVP-Paket:
|
||||
|
||||
1. Tenant, User, Login, Registrierung.
|
||||
2. Teilnehmer, Settings, Ledger.
|
||||
3. Dashboard, Striche, Einzahlungen, Gesamtuebersicht.
|
||||
4. Mitgliederverwaltung.
|
||||
5. Hinweise.
|
||||
6. CSV-Import, Export.
|
||||
7. Landingpage.
|
||||
2. Mail-Links, zentrale Mandantenauswahl und erste Landingpage.
|
||||
3. Teilnehmer, Settings, Ledger.
|
||||
4. Dashboard, Striche, Einzahlungen, Gesamtuebersicht.
|
||||
5. Mitgliederverwaltung.
|
||||
6. Hinweise.
|
||||
7. CSV-Import, Export.
|
||||
|
||||
Spaeter:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user