docs(PROJ-46): QA-Testergebnisse (9/9 PASS auf 192.168.1.132) dokumentieren
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
81744562c3
commit
08f486a28c
@@ -7806,3 +7806,340 @@ Keine Commits in dieser Session.
|
|||||||
- src/lib/api/routing_rules.ts | 94 ++++++++++++++++++++++++++++
|
- src/lib/api/routing_rules.ts | 94 ++++++++++++++++++++++++++++
|
||||||
|
|
||||||
---
|
---
|
||||||
|
## 2026-07-03 23:45 – 23:46 (0m)
|
||||||
|
**Beschreibung:** Claude Code Session
|
||||||
|
**Projekt:** archivmail
|
||||||
|
|
||||||
|
### Commits
|
||||||
|
- af16138 docs: README aktualisieren, Dev-Log/Dateiindex/GoBD-Checklist/Screenshots ins Repo
|
||||||
|
|
||||||
|
### Geänderte Dateien
|
||||||
|
- CODEBASE.md | 262 ++++++
|
||||||
|
- DEVLOG.md | 7808 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
- README.md | 782 +++++++++---------
|
||||||
|
- docs/GOBD_DSGVO_CHECKLIST.md | 64 ++
|
||||||
|
- resume | 1 +
|
||||||
|
- screenshots/2026-06-12_22-27.png | Bin 0 -> 59929 bytes
|
||||||
|
- screenshots/2026-06-13_00-14.png | Bin 0 -> 125637 bytes
|
||||||
|
- screenshots/2026-06-14_21-59.png | Bin 0 -> 81727 bytes
|
||||||
|
- screenshots/2026-06-14_22-00.png | Bin 0 -> 195105 bytes
|
||||||
|
|
||||||
|
---
|
||||||
|
## 2026-07-03 23:46 – 23:48 (1m)
|
||||||
|
**Beschreibung:** Claude Code Session
|
||||||
|
**Projekt:** archivmail
|
||||||
|
|
||||||
|
### Commits
|
||||||
|
Keine Commits in dieser Session.
|
||||||
|
|
||||||
|
### Geänderte Dateien
|
||||||
|
- CODEBASE.md | 262 ++++++
|
||||||
|
- DEVLOG.md | 7808 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
- README.md | 782 +++++++++---------
|
||||||
|
- docs/GOBD_DSGVO_CHECKLIST.md | 64 ++
|
||||||
|
- resume | 1 +
|
||||||
|
- screenshots/2026-06-12_22-27.png | Bin 0 -> 59929 bytes
|
||||||
|
- screenshots/2026-06-13_00-14.png | Bin 0 -> 125637 bytes
|
||||||
|
- screenshots/2026-06-14_21-59.png | Bin 0 -> 81727 bytes
|
||||||
|
- screenshots/2026-06-14_22-00.png | Bin 0 -> 195105 bytes
|
||||||
|
|
||||||
|
---
|
||||||
|
## 2026-07-03 23:49 – 23:49 (0m)
|
||||||
|
**Beschreibung:** Claude Code Session
|
||||||
|
**Projekt:** archivmail
|
||||||
|
|
||||||
|
### Commits
|
||||||
|
Keine Commits in dieser Session.
|
||||||
|
|
||||||
|
### Geänderte Dateien
|
||||||
|
- CODEBASE.md | 262 ++++++
|
||||||
|
- DEVLOG.md | 7808 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
- README.md | 782 +++++++++---------
|
||||||
|
- docs/GOBD_DSGVO_CHECKLIST.md | 64 ++
|
||||||
|
- resume | 1 +
|
||||||
|
- screenshots/2026-06-12_22-27.png | Bin 0 -> 59929 bytes
|
||||||
|
- screenshots/2026-06-13_00-14.png | Bin 0 -> 125637 bytes
|
||||||
|
- screenshots/2026-06-14_21-59.png | Bin 0 -> 81727 bytes
|
||||||
|
- screenshots/2026-06-14_22-00.png | Bin 0 -> 195105 bytes
|
||||||
|
|
||||||
|
---
|
||||||
|
## 2026-07-03 23:50 – 23:53 (2m)
|
||||||
|
**Beschreibung:** Claude Code Session
|
||||||
|
**Projekt:** archivmail
|
||||||
|
|
||||||
|
### Commits
|
||||||
|
Keine Commits in dieser Session.
|
||||||
|
|
||||||
|
### Geänderte Dateien
|
||||||
|
- CODEBASE.md | 262 ++++++
|
||||||
|
- DEVLOG.md | 7808 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
- README.md | 782 +++++++++---------
|
||||||
|
- docs/GOBD_DSGVO_CHECKLIST.md | 64 ++
|
||||||
|
- resume | 1 +
|
||||||
|
- screenshots/2026-06-12_22-27.png | Bin 0 -> 59929 bytes
|
||||||
|
- screenshots/2026-06-13_00-14.png | Bin 0 -> 125637 bytes
|
||||||
|
- screenshots/2026-06-14_21-59.png | Bin 0 -> 81727 bytes
|
||||||
|
- screenshots/2026-06-14_22-00.png | Bin 0 -> 195105 bytes
|
||||||
|
|
||||||
|
---
|
||||||
|
## 2026-07-03 23:53 – 23:54 (0m)
|
||||||
|
**Beschreibung:** Claude Code Session
|
||||||
|
**Projekt:** archivmail
|
||||||
|
|
||||||
|
### Commits
|
||||||
|
Keine Commits in dieser Session.
|
||||||
|
|
||||||
|
### Geänderte Dateien
|
||||||
|
- CODEBASE.md | 262 ++++++
|
||||||
|
- DEVLOG.md | 7808 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
- README.md | 782 +++++++++---------
|
||||||
|
- docs/GOBD_DSGVO_CHECKLIST.md | 64 ++
|
||||||
|
- resume | 1 +
|
||||||
|
- screenshots/2026-06-12_22-27.png | Bin 0 -> 59929 bytes
|
||||||
|
- screenshots/2026-06-13_00-14.png | Bin 0 -> 125637 bytes
|
||||||
|
- screenshots/2026-06-14_21-59.png | Bin 0 -> 81727 bytes
|
||||||
|
- screenshots/2026-06-14_22-00.png | Bin 0 -> 195105 bytes
|
||||||
|
|
||||||
|
---
|
||||||
|
## 2026-07-03 23:54 – 23:56 (1m)
|
||||||
|
**Beschreibung:** Claude Code Session
|
||||||
|
**Projekt:** archivmail
|
||||||
|
|
||||||
|
### Commits
|
||||||
|
- c274df5 fix(deploy): update.sh synchronisiert systemd-Units bei jedem Deploy
|
||||||
|
|
||||||
|
### Geänderte Dateien
|
||||||
|
- update.sh | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
|
||||||
|
---
|
||||||
|
## 2026-07-03 23:58 – 23:58 (0m)
|
||||||
|
**Beschreibung:** Claude Code Session
|
||||||
|
**Projekt:** archivmail
|
||||||
|
|
||||||
|
### Commits
|
||||||
|
Keine Commits in dieser Session.
|
||||||
|
|
||||||
|
### Geänderte Dateien
|
||||||
|
- update.sh | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
|
||||||
|
---
|
||||||
|
## 2026-07-03 23:59 – 00:01 (1m)
|
||||||
|
**Beschreibung:** Claude Code Session
|
||||||
|
**Projekt:** archivmail
|
||||||
|
|
||||||
|
### Commits
|
||||||
|
Keine Commits in dieser Session.
|
||||||
|
|
||||||
|
### Geänderte Dateien
|
||||||
|
- update.sh | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
|
||||||
|
---
|
||||||
|
## 2026-07-04 00:02 – 00:02 (0m)
|
||||||
|
**Beschreibung:** Claude Code Session
|
||||||
|
**Projekt:** archivmail
|
||||||
|
|
||||||
|
### Commits
|
||||||
|
- 04e5b0f fix(security-audit): HTTPS/Port-Checks erkennen nftables Set-Syntax nicht
|
||||||
|
|
||||||
|
### Geänderte Dateien
|
||||||
|
- internal/api/admin_security_handlers.go | 33 ++++++++++++++++++++++++++++++---
|
||||||
|
|
||||||
|
---
|
||||||
|
## 2026-07-04 00:08 – 09:43 (9h 34m)
|
||||||
|
**Beschreibung:** Claude Code Session
|
||||||
|
**Projekt:** archivmail
|
||||||
|
|
||||||
|
### Commits
|
||||||
|
Keine Commits in dieser Session.
|
||||||
|
|
||||||
|
### Geänderte Dateien
|
||||||
|
- internal/api/admin_security_handlers.go | 33 ++++++++++++++++++++++++++++++---
|
||||||
|
|
||||||
|
---
|
||||||
|
## 2026-07-04 09:44 – 09:44 (0m)
|
||||||
|
**Beschreibung:** Claude Code Session
|
||||||
|
**Projekt:** archivmail
|
||||||
|
|
||||||
|
### Commits
|
||||||
|
Keine Commits in dieser Session.
|
||||||
|
|
||||||
|
### Geänderte Dateien
|
||||||
|
- internal/api/admin_security_handlers.go | 33 ++++++++++++++++++++++++++++++---
|
||||||
|
|
||||||
|
---
|
||||||
|
## 2026-07-04 09:44 – 10:49 (1h 04m)
|
||||||
|
**Beschreibung:** Claude Code Session
|
||||||
|
**Projekt:** archivmail
|
||||||
|
|
||||||
|
### Commits
|
||||||
|
Keine Commits in dieser Session.
|
||||||
|
|
||||||
|
### Geänderte Dateien
|
||||||
|
- internal/api/admin_security_handlers.go | 33 ++++++++++++++++++++++++++++++---
|
||||||
|
|
||||||
|
---
|
||||||
|
## 2026-07-04 11:55 – 11:56 (0m)
|
||||||
|
**Beschreibung:** Claude Code Session
|
||||||
|
**Projekt:** archivmail
|
||||||
|
|
||||||
|
### Commits
|
||||||
|
Keine Commits in dieser Session.
|
||||||
|
|
||||||
|
### Geänderte Dateien
|
||||||
|
- internal/api/admin_security_handlers.go | 33 ++++++++++++++++++++++++++++++---
|
||||||
|
|
||||||
|
---
|
||||||
|
## 2026-07-04 12:00 – 12:00 (0m)
|
||||||
|
**Beschreibung:** Claude Code Session
|
||||||
|
**Projekt:** archivmail
|
||||||
|
|
||||||
|
### Commits
|
||||||
|
Keine Commits in dieser Session.
|
||||||
|
|
||||||
|
### Geänderte Dateien
|
||||||
|
- features/INDEX.md | 4 ++--
|
||||||
|
- features/PROJ-43-archivierungsregeln.md | 15 ++++++++++++++-
|
||||||
|
- features/PROJ-52-vollstaendigkeits-reconciliation.md | 21 ++++++++++++++++++---
|
||||||
|
|
||||||
|
---
|
||||||
|
## 2026-07-04 12:01 – 12:05 (4m)
|
||||||
|
**Beschreibung:** Claude Code Session
|
||||||
|
**Projekt:** archivmail
|
||||||
|
|
||||||
|
### Commits
|
||||||
|
Keine Commits in dieser Session.
|
||||||
|
|
||||||
|
### Geänderte Dateien
|
||||||
|
- features/INDEX.md | 4 ++--
|
||||||
|
- features/PROJ-43-archivierungsregeln.md | 15 ++++++++++++++-
|
||||||
|
- features/PROJ-52-vollstaendigkeits-reconciliation.md | 21 ++++++++++++++++++---
|
||||||
|
|
||||||
|
---
|
||||||
|
## 2026-07-04 12:06 – 12:07 (0m)
|
||||||
|
**Beschreibung:** Claude Code Session
|
||||||
|
**Projekt:** archivmail
|
||||||
|
|
||||||
|
### Commits
|
||||||
|
- a739015 docs: GoBD-Checklist auf aktuellen Stand bringen (PROJ-52, PROJ-56c)
|
||||||
|
|
||||||
|
### Geänderte Dateien
|
||||||
|
- docs/GOBD_DSGVO_CHECKLIST.md | 4 ++--
|
||||||
|
|
||||||
|
---
|
||||||
|
## 2026-07-04 12:08 – 12:12 (3m)
|
||||||
|
**Beschreibung:** Claude Code Session
|
||||||
|
**Projekt:** archivmail
|
||||||
|
|
||||||
|
### Commits
|
||||||
|
- 6d67a6b docs: GoBD-Checklist auf aktuellen Stand bringen, Spec für PROJ-56c nachtragen
|
||||||
|
|
||||||
|
### Geänderte Dateien
|
||||||
|
- docs/GOBD_DSGVO_CHECKLIST.md | 56 ++++++++++++++++++++++++++------------------------------
|
||||||
|
- features/INDEX.md | 1 +
|
||||||
|
- features/PROJ-56c-cron-purge-markierte-mails.md | 121 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
|
||||||
|
---
|
||||||
|
## 2026-07-04 12:13 – 12:14 (1m)
|
||||||
|
**Beschreibung:** Claude Code Session
|
||||||
|
**Projekt:** archivmail
|
||||||
|
|
||||||
|
### Commits
|
||||||
|
- 17633cb docs: Migrations-Runbook für Compliance-Erhalt-Check ergänzen (GoBD Punkt 10)
|
||||||
|
|
||||||
|
### Geänderte Dateien
|
||||||
|
- docs/GOBD_DSGVO_CHECKLIST.md | 18 +++++++-----------
|
||||||
|
- docs/MIGRATION_RUNBOOK.md | 117 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
|
||||||
|
---
|
||||||
|
## 2026-07-04 12:15 – 12:17 (2m)
|
||||||
|
**Beschreibung:** Claude Code Session
|
||||||
|
**Projekt:** archivmail
|
||||||
|
|
||||||
|
### Commits
|
||||||
|
- 45ac685 docs(PROJ-65): Spec für physische Tenant-Trennung im Storage-Layer
|
||||||
|
|
||||||
|
### Geänderte Dateien
|
||||||
|
- features/INDEX.md | 3 ++-
|
||||||
|
|
||||||
|
---
|
||||||
|
## 2026-07-04 12:17 – 12:17 (0m)
|
||||||
|
**Beschreibung:** Claude Code Session
|
||||||
|
**Projekt:** archivmail
|
||||||
|
|
||||||
|
### Commits
|
||||||
|
Keine Commits in dieser Session.
|
||||||
|
|
||||||
|
### Geänderte Dateien
|
||||||
|
- features/INDEX.md | 3 ++-
|
||||||
|
|
||||||
|
---
|
||||||
|
## 2026-07-04 12:20 – 12:21 (0m)
|
||||||
|
**Beschreibung:** Claude Code Session
|
||||||
|
**Projekt:** archivmail
|
||||||
|
|
||||||
|
### Commits
|
||||||
|
- bd72761 chore: Screenshots aus dem Repo entfernen
|
||||||
|
|
||||||
|
### Geänderte Dateien
|
||||||
|
- .gitignore | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
- screenshots/2026-06-12_22-27.png | Bin 59929 -> 0 bytes
|
||||||
|
- screenshots/2026-06-13_00-14.png | Bin 125637 -> 0 bytes
|
||||||
|
- screenshots/2026-06-14_21-59.png | Bin 81727 -> 0 bytes
|
||||||
|
- screenshots/2026-06-14_22-00.png | Bin 195105 -> 0 bytes
|
||||||
|
|
||||||
|
---
|
||||||
|
## 2026-07-04 12:23 – 12:25 (2m)
|
||||||
|
**Beschreibung:** Claude Code Session
|
||||||
|
**Projekt:** archivmail
|
||||||
|
|
||||||
|
### Commits
|
||||||
|
- 8174456 docs: README auf aktuellen Stand bringen (PROJ-43/52 Deployed, Config-Referenz vervollständigt)
|
||||||
|
|
||||||
|
### Geänderte Dateien
|
||||||
|
- README.md | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------
|
||||||
|
|
||||||
|
---
|
||||||
|
## 2026-07-04 12:26 – 12:27 (0m)
|
||||||
|
**Beschreibung:** Claude Code Session
|
||||||
|
**Projekt:** archivmail
|
||||||
|
|
||||||
|
### Commits
|
||||||
|
Keine Commits in dieser Session.
|
||||||
|
|
||||||
|
### Geänderte Dateien
|
||||||
|
- README.md | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------
|
||||||
|
|
||||||
|
---
|
||||||
|
## 2026-07-04 12:27 – 12:27 (0m)
|
||||||
|
**Beschreibung:** Claude Code Session
|
||||||
|
**Projekt:** archivmail
|
||||||
|
|
||||||
|
### Commits
|
||||||
|
Keine Commits in dieser Session.
|
||||||
|
|
||||||
|
### Geänderte Dateien
|
||||||
|
- README.md | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------
|
||||||
|
|
||||||
|
---
|
||||||
|
## 2026-07-04 12:28 – 12:28 (0m)
|
||||||
|
**Beschreibung:** Claude Code Session
|
||||||
|
**Projekt:** archivmail
|
||||||
|
|
||||||
|
### Commits
|
||||||
|
Keine Commits in dieser Session.
|
||||||
|
|
||||||
|
### Geänderte Dateien
|
||||||
|
- README.md | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------
|
||||||
|
|
||||||
|
---
|
||||||
|
## 2026-07-04 12:38 – 12:38 (0m)
|
||||||
|
**Beschreibung:** Claude Code Session
|
||||||
|
**Projekt:** archivmail
|
||||||
|
|
||||||
|
### Commits
|
||||||
|
Keine Commits in dieser Session.
|
||||||
|
|
||||||
|
### Geänderte Dateien
|
||||||
|
- README.md | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------
|
||||||
|
|
||||||
|
---
|
||||||
|
|||||||
@@ -76,6 +76,43 @@ Konkreter Support-Fall (2026-06-13): patrick@perlbach24.de konnte sich trotz Pas
|
|||||||
- Nicht-Tenant-User per E-Mail → Erfolg
|
- Nicht-Tenant-User per E-Mail → Erfolg
|
||||||
- Unbekannter Identifier → `invalid_credentials`
|
- Unbekannter Identifier → `invalid_credentials`
|
||||||
|
|
||||||
|
## QA Test Results (2026-07-04, QA Engineer)
|
||||||
|
|
||||||
|
**Testumgebung:** Testserver 192.168.1.132 (nicht Produktiv 131). Dedizierte Test-User
|
||||||
|
angelegt und nach Test wieder entfernt:
|
||||||
|
- `qa46-tenant` / `qa46-tenant@perlbach24.de` (tenant_id=1, role user) — username ≠ email
|
||||||
|
- `qa46-super` / `qa46-super@example.com` (tenant_id NULL, role superadmin)
|
||||||
|
Passwort `TestPw123!` (bcrypt cost 12). Beide User + zugehörige `login_attempts` nach Testende
|
||||||
|
gelöscht (verifiziert: 0 verbleibende `qa46%`-User). Audit-Log-Einträge bleiben append-only
|
||||||
|
erhalten (GoBD). Keine bestehenden Accounts verändert.
|
||||||
|
|
||||||
|
**Gesamtergebnis: BESTANDEN (9/9 Punkte pass, 0 Bugs).**
|
||||||
|
|
||||||
|
| # | Testpunkt | Erwartung | Ergebnis | Status |
|
||||||
|
|---|-----------|-----------|----------|--------|
|
||||||
|
| 1 | Tenant-User Login per E-Mail | 200 | 200, `user.username=qa46-tenant` korrekt aufgelöst | PASS |
|
||||||
|
| 2 | Tenant-User Login per Username | 401 | 401 invalid_credentials | PASS |
|
||||||
|
| 3 | Non-Tenant (superadmin, tenant_id NULL) per Username | 200 | 200 | PASS |
|
||||||
|
| 4 | Non-Tenant per E-Mail | 200 | 200 | PASS |
|
||||||
|
| 5 | Unbekannter Identifier | 401 | 401 (`{"error":"invalid credentials"}`) | PASS |
|
||||||
|
| 5b | Tenant-E-Mail + falsches Passwort | 401 | 401 | PASS |
|
||||||
|
| 6 | Rate-Limiting mit E-Mail-String als Schlüssel | 429 nach Fehlversuchen | 429 ausgelöst; `login_attempts.username` speichert vollständige E-Mail (VARCHAR(255)) ungekürzt | PASS |
|
||||||
|
| 7 | Audit-Log protokolliert Fehlversuche mit eingegebenem Identifier | Identifier im Log | Fehlversuche geloggt mit exaktem Identifier (`qa46-tenant@perlbach24.de`, `qa46-tenant`), Detail `invalid_password`/`rate limited`; Erfolg loggt kanonischen `user.Username` | PASS |
|
||||||
|
| 8 | IMAP-Login (PROJ-26, VerifyPassword-Pfad) per Username unverändert | LOGIN completed | `a OK LOGIN completed` per Username auf Port 993; VerifyPassword unangetastet, genutzt in `internal/imapserver/server.go:380` | PASS |
|
||||||
|
| 9 | Frontend: `/` E-Mail-Label+type=email, `/admin/login` "Benutzername oder E-Mail-Adresse" | korrekt | Deployte Seiten: `/` rendert `E-Mail-Adresse` + `type="email"`; `/admin/login` rendert `Benutzername oder E-Mail-Adresse` (type=text) | PASS |
|
||||||
|
|
||||||
|
**Code-Review-Notizen:**
|
||||||
|
- `VerifyLogin` (userstore.go): Email-Lookup → Fallback `username = $1 AND tenant_id IS NULL`.
|
||||||
|
Timing-Side-Channel geschlossen (Dummy-bcrypt bei No-Match). `VerifyPassword` unverändert.
|
||||||
|
- `Manager.Login` (auth.go:79) ruft `VerifyLogin`. LDAP-`extractDomain` bleibt kompatibel (E-Mail-Format).
|
||||||
|
- Kein Regressions-Fund gegen bestehende Auth-/IMAP-Features.
|
||||||
|
|
||||||
|
**Hinweis (kein Bug, informativ):** Alle produktiven Tenant-User auf 132 haben aktuell
|
||||||
|
`username == email` (z.B. `patrick@perlbach24.de`), sodass ihr Username-Login weiterhin über
|
||||||
|
den Email-Match greift. Der Reject-Pfad (Punkt 2) wurde deshalb bewusst mit einem Test-User
|
||||||
|
`username != email` verifiziert. `homelocal-admin` (id 120) wäre ein produktiver Fall mit
|
||||||
|
abweichendem Username — Passwort unbekannt, daher nicht live geprüft.
|
||||||
|
|
||||||
## Migration (bereits durchgeführt am 2026-06-13)
|
## Migration (bereits durchgeführt am 2026-06-13)
|
||||||
- Datenqualitäts-Check auf 192.168.1.131: 0 Tenant-User mit fehlender/ungültiger E-Mail, 0 Username↔E-Mail-Kollisionen
|
- Datenqualitäts-Check auf 192.168.1.131: 0 Tenant-User mit fehlender/ungültiger E-Mail, 0 Username↔E-Mail-Kollisionen
|
||||||
- `login_attempts.username` von VARCHAR(100) → VARCHAR(255) erweitert (idempotenter `initSchema`-Eintrag in `internal/userstore/userstore.go` ergänzt)
|
- `login_attempts.username` von VARCHAR(100) → VARCHAR(255) erweitert (idempotenter `initSchema`-Eintrag in `internal/userstore/userstore.go` ergänzt)
|
||||||
|
|||||||
Reference in New Issue
Block a user