PWA: Service Worker ohne Session erreichbar, nie HTTP-gecacht; authentifizierter Smoke

- proxy: /sw.js vom Session-Gate ausgenommen (Update-Prüfung auch bei abgelaufener
  Sitzung; enthält keine Mandantendaten) – gemeldet von L7
- next.config: /sw.js mit Cache-Control no-cache/no-store, Service-Worker-Allowed /
- scripts/smoke-auth.ts: Session-Cookie über finalizeIdentityLogin + next-auth/jwt
  encode (ohne Passworteingabe), prüft Backoffice- und Monteur-Seiten

Nachweis: /sw.js anonym 200 + no-cache; Smoke 19/19 Seiten grün.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-14 17:43:29 +02:00
co-authored by Claude Opus 5
parent 2a30ee1919
commit 1796869e05
3 changed files with 106 additions and 1 deletions
+3 -1
View File
@@ -61,12 +61,14 @@ export function proxy(request: NextRequest) {
export const config = {
// Everything except static assets.
//
// `sw.js` (PWA Service Worker): muss auch mit abgelaufener Sitzung für die Update-Prüfung
// erreichbar sein; enthält keine Mandantendaten.
// Ergänzt um `webmanifest`: das PWA-Manifest muss auch ohne Session ausgeliefert
// werden, sonst bekommt der Browser für /site.webmanifest die Login-Seite statt
// JSON. Die Logo-/Favicon-Dateien sind über die Endungen bereits abgedeckt.
// Bewusst KEINE Verzeichnis-Ausnahme für `assets/` — das ist zugleich die
// App-Route des Asset-Inventars und muss hinter dem Gate bleiben.
matcher: [
"/((?!_next/static|_next/image|favicon.ico|site.webmanifest|.*\\.(?:svg|png|jpg|ico|webmanifest)).*)",
"/((?!_next/static|_next/image|favicon.ico|site.webmanifest|sw\\.js|.*\\.(?:svg|png|jpg|ico|webmanifest)).*)",
],
};