fix(design): Farbwelt und Modus bleiben nach dem Neuladen erhalten

requireAuth hat den Benutzer mit einer ausgeschriebenen Spaltenliste geladen,
in der theme und theme_mode fehlten. GET /api/auth/me antwortete deshalb mit
null, und der ThemeProvider hat das beim Neuladen als "nichts gewaehlt"
gelesen: die Anzeige fiel auf perinco/System zurueck und hat den
localStorage-Zwischenspeicher gleich mit ueberschrieben. Direkt nach dem Klick
und nach dem Anmelden sah es richtig aus, weil PATCH /me den geaenderten Wert
selbst zurueckgibt und der Login SELECT * benutzt - nur das Neuladen nicht.

Dazu ein Test, der die Spaltenliste mit den Feldern von publicUser()
vergleicht, damit ein neues Benutzerfeld nicht wieder still verloren geht.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Sascha Wolf
2026-09-10 10:29:23 +02:00
co-authored by Claude Opus 5
parent 71a8c30b23
commit a50f5cb4a6
5 changed files with 83 additions and 4 deletions
+5 -1
View File
@@ -53,7 +53,7 @@ ansehen - siehe *Oberfläche prüfen ohne Datenbank* weiter unten.
```bash
npm run lint # = tsc --noEmit, das ist die Wahrheit
npm run build # muss ohne Fehler durchlaufen
cd server && npm test # Postfachanbindung, Berater-Liste, Benutzerfelder, LinkedIn-Foto
cd server && npm test # Postfachanbindung, Berater-Liste, Benutzerfelder, LinkedIn-Foto, Sitzungsbenutzer
```
Automatische Tests gibt es für zwei Bereiche, beide ohne Test-Framework, reines
@@ -68,6 +68,10 @@ Node und ohne Datenbank:
das mehrere Namen kommagetrennt hält. Es steckt im Speichern, im Verlauf, in
der Auswertung und in der Übernahme; ein Fehler darin fällt nicht auf, weil
die Liste weiter Namen zeigt und nur die Zahlen falsch wären.
* `server/test/sessionUser.test.mjs` vergleicht die Spaltenliste in
`requireAuth` mit den Feldern, die `publicUser()` ausliefert. Fehlt dort eine
Spalte, antwortet die API still mit `null` - so ist die gespeicherte
Designwahl beim Neuladen verloren gegangen.
Für alles andere gilt: `tsc`, ein Build und ein Blick in die Oberfläche - notfalls
mit dem Stub aus [Oberfläche prüfen ohne Datenbank](#oberflaeche-pruefen-ohne-datenbank).