M3 Registrierung und Login-Grundlage ergänzen

- SaaS-Auth-Helper und PDO-Datenbankzugriff einführen
- Registrierung, Login, Logout und Kontoansicht ergänzen
- Auth-Migration, Flow-Check und Smoke-Abdeckung aktualisieren
This commit is contained in:
2026-07-12 20:17:42 +02:00
parent eef0338e31
commit 5baf6542ce
15 changed files with 909 additions and 24 deletions
+47 -6
View File
@@ -26,10 +26,11 @@ das neue Modell umgestellt.
## Umgesetzter erster Schritt
Umgesetzte Migration:
Umgesetzte Migrationen:
```text
database/migrations/0002_saas_identity_tenants.sql
database/migrations/0003_saas_auth_account_fields.sql
```
Tabellen:
@@ -45,6 +46,7 @@ Ergaenzende Skripte:
```text
scripts/backfill-default-tenant.php
scripts/check-m3-saas-basis.php
scripts/check-m3-auth-flow.php
```
Wichtige Regeln:
@@ -104,6 +106,39 @@ Ausgefuehrter Dev-Stand:
`tenant_memberships` angelegt.
- Ein zweiter Backfill-Lauf blieb idempotent.
## Registrierung und Login
Umgesetzte Dateien:
```text
app/database.php
app/saas-auth.php
login.php
register.php
konto.php
logout.php
```
Umgesetzter Umfang:
- Registrierung legt Tenant, Owner-User, Default-Settings, Membership und
Owner-Participant in einer Transaktion an.
- Login prueft `users.password_hash`, aktive Membership und aktiven Tenant.
- Logout beendet die neue PHP-Login-Session.
- `konto.php` zeigt den aktuellen SaaS-Kontext fuer den angemeldeten User.
- `functions.php` akzeptiert eine SaaS-Login-Session als erste Identitaetsquelle,
laesst `DEV_AUTH_EMAIL` und `AUTH_USER` aber als Legacy-Fallback bestehen.
- `footer.php` ist fuer nicht angemeldete Public-Seiten sicher und zeigt Links
zu Login und Registrierung.
Noch offen im M3-Auth-Scope:
- Passwort-Reset.
- E-Mail-Verifikation.
- Tenant-Aufloesung ueber Subdomain oder Custom Domain.
- Zentrale Rollenpruefung fuer neue SaaS-Seiten.
- Owner-/Admin-Seite fuer Tenant-Grundeinstellungen.
## Erste Akzeptanzkriterien
- Migrationen laufen mehrfach ohne Fehler: erfuellt.
@@ -113,6 +148,8 @@ Ausgefuehrter Dev-Stand:
- Jeder bestehende `kl_Mitarbeiter` hat genau einen `participant`: erfuellt.
- `participants.legacy_mitarbeiter_id` ist gesetzt: erfuellt.
- Admins werden als tenant-scoped Rolle abgebildet: erfuellt.
- Registrierung und Login funktionieren fuer einen neuen Test-Tenant:
erfuellt.
- Golden-Master und HTTP-Smoke bleiben gruen: erfuellt.
## Risiken
@@ -128,8 +165,12 @@ Ausgefuehrter Dev-Stand:
## Empfohlene Reihenfolge
1. Migration `0002_saas_identity_tenants.sql` erstellen: erledigt.
2. `scripts/backfill-default-tenant.php` erstellen: erledigt.
3. Backfill gegen die Dev-Datenbank ausfuehren: erledigt.
4. Kontrollskript fuer Tenant/Participant/Role-Counts schreiben: erledigt.
5. Golden-Master und HTTP-Smoke ausfuehren: erledigt.
6. Danach Login-/Registrierungsrouten planen: naechster Schritt.
2. Migration `0003_saas_auth_account_fields.sql` erstellen: erledigt.
3. `scripts/backfill-default-tenant.php` erstellen: erledigt.
4. Backfill gegen die Dev-Datenbank ausfuehren: erledigt.
5. Kontrollskript fuer Tenant/Participant/Role-Counts schreiben: erledigt.
6. Login-/Registrierungsrouten bauen: erledigt.
7. Auth-Flow-Kontrollskript schreiben: erledigt.
8. Golden-Master und HTTP-Smoke ausfuehren: erledigt.
9. Passwort-Reset, E-Mail-Verifikation und zentrale Rollenpruefung planen:
naechster Schritt.