refactor(frontend): zentrales Cookie-Handling + fetch2-Konventionstest #309

Merged
niboer merged 1 commit from refactor/centralize-cookie-handling into main 2026-07-19 21:00:42 +00:00
Owner

Allgemein

Altes Verhalten

Cookie-Operationen (setzen/lesen/loeschen von 12 verschiedenen Cookies) waren auf 10+ Dateien verteilt mit duplizierten Option-Konstanten (path, httpOnly, sameSite, secure, maxAge) und Magic Strings.

Neues Verhalten

  • $lib/config/cookies.ts: COOKIE_NAMES, Option-Presets (SESSION_COOKIE, CLIENT_COOKIE, SESS_CLEAR, CONSENT_SET, ...), MAX_AGES, SESSION_COOKIE_NAMES, OAUTH_COOKIE_NAMES
  • $lib/utils/client-cookie.ts: getCookie/setCookie/deleteCookie (einzige Stelle mit document.cookie)
  • $lib/utils/server-cookie.ts: setSessionTokens/clearSession/setUserInfo/setOauthFlow/clearOauthFlow (alle event.cookies-Operationen)
  • Neuer fetch2-convention.test.ts: scannt src/routes/ und faengt jedes bare fetch( in Server-Routen (ausser +page.server.ts, +layout.server.ts, .svelte, BFF-Proxy)
  • sameSite beim Cookie-Clearing jetzt einheitlich strict (bisher teilweise lax)
  • session_expires_at wird bei Refresh-Failure in hooks.server.ts jetzt korrekt mitgeloescht

Begruendung

Vermeidung von Duplikation, konsistente Cookie-Optionen, automatische Erkennung von fetch2-Verstossen.

Test-Hinweise

  • cd frontend && npm run test — 1227 Tests, 74 Files
  • cd frontend && npm run lint — 0 errors
  • Gegentest im Commit: fetch2 manuell auf fetch zurueckgesetzt → Test schlaegt an
### Allgemein - closes #308 ### Altes Verhalten Cookie-Operationen (setzen/lesen/loeschen von 12 verschiedenen Cookies) waren auf 10+ Dateien verteilt mit duplizierten Option-Konstanten (path, httpOnly, sameSite, secure, maxAge) und Magic Strings. ### Neues Verhalten - `$lib/config/cookies.ts`: COOKIE_NAMES, Option-Presets (SESSION_COOKIE, CLIENT_COOKIE, SESS_CLEAR, CONSENT_SET, ...), MAX_AGES, SESSION_COOKIE_NAMES, OAUTH_COOKIE_NAMES - `$lib/utils/client-cookie.ts`: getCookie/setCookie/deleteCookie (einzige Stelle mit document.cookie) - `$lib/utils/server-cookie.ts`: setSessionTokens/clearSession/setUserInfo/setOauthFlow/clearOauthFlow (alle event.cookies-Operationen) - Neuer `fetch2-convention.test.ts`: scannt `src/routes/` und faengt jedes bare `fetch(` in Server-Routen (ausser `+page.server.ts`, `+layout.server.ts`, `.svelte`, BFF-Proxy) - sameSite beim Cookie-Clearing jetzt einheitlich `strict` (bisher teilweise `lax`) - `session_expires_at` wird bei Refresh-Failure in hooks.server.ts jetzt korrekt mitgeloescht ### Begruendung Vermeidung von Duplikation, konsistente Cookie-Optionen, automatische Erkennung von `fetch2`-Verstossen. ### Test-Hinweise - `cd frontend && npm run test` — 1227 Tests, 74 Files - `cd frontend && npm run lint` — 0 errors - Gegentest im Commit: `fetch2` manuell auf `fetch` zurueckgesetzt → Test schlaegt an
refactor(frontend): zentrales Cookie-Handling + fetch2-Konventionstest
All checks were successful
CI Backend / lint-backend (pull_request) Successful in 1m0s
CI Frontend / lint-frontend (pull_request) Successful in 1m23s
CI Meta / conventional-commit (pull_request) Successful in 1s
E2E / e2e (pull_request) Successful in 5m50s
CI Backend / test-backend (pull_request) Successful in 3m53s
CI Frontend / test-frontend (pull_request) Successful in 2m4s
99233213ba
refs #308

Aktuelles: Cookie-Operationen (setzen/lesen/loeschen) sind auf 10+ Dateien
verteilt mit duplizierten Optionen (path, httpOnly, sameSite, secure) und
Magic Strings. callback/+server.ts nutzt versehentlich fetch statt fetch2,
wodurch E2E-Tests im HTTP/2-Environment brechen.

Neu: Drei neue Module (/config/cookies.ts, /utils/client-cookie.ts,
/utils/server-cookie.ts) bundeln alle Cookie-Konstanten und
Operationen an zentraler Stelle. fetch2 in callback/+server.ts
wiederhergestellt. Neuer Unit-Test (fetch2-convention.test.ts) pruft,
dass Server-Routen fetch2 statt fetch fuer HTTP-Calls nutzen.

Cookie-Optionen jetzt einheitlich: Session-Cookies mit sameSite=strict,
Clear-Cookies ebenfalls strict (bisher teilweise lax). session_expires_at
wird in hooks.server.ts bei Refresh-Failure jetzt korrekt mitgeloescht
(war vorher vergessen).

Geaenderte Dateien:
  - 3 neue Dateien (config + utils)
  - 11 migrierte Server/Client-Dateien
  - 1 neuer fetch2-Konventionstest
niboer merged commit 4e14746747 into main 2026-07-19 21:00:42 +00:00
niboer deleted branch refactor/centralize-cookie-handling 2026-07-19 21:00:42 +00:00
Sign in to join this conversation.
No description provided.