syncova-policies/docs/UMSETZUNG-2026-09-10.md
Weapie 265ca8ac38
All checks were successful
Container-Image bauen und veröffentlichen / build-and-push (push) Successful in 5m15s
Improve accessibility and access controls; verify production and database recovery
2026-09-14 11:44:41 +02:00

65 lines
6.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Umsetzung vom 10.09.2026 – Abschlussprüfung am 11.09.2026
Ausgangspunkt: Commit 0134dd6 und Prüfbericht vom 09.09.2026.
## Änderungen
- Next.js 15.5.25, React/React DOM 19.1.9, NextAuth beta.32, @auth/core 0.41.3 und aktualisierter Prisma-Adapter.
- Prisma-Client und CLI einheitlich 6.19.3; gemeinsame Clientinstanz. Die Middleware verwendet die unterstützte Node.js-Laufzeit. PostCSS wird einheitlich auf eine gepatchte 8.5-Version aufgelöst.
- Geschützte Zugriffe überprüfen das aktuelle Konto. Sperren und Kontoänderungen entziehen alten Sitzungen den Zugriff.
- Benutzerverwaltung ausschließlich für Super-Admins; Eingabevalidierung und transaktionaler Schutz des letzten aktiven Super-Admins.
- Neue Passwörter: mindestens 12 Zeichen und höchstens 72 UTF-8-Bytes wegen bcrypt.
- Dauerhafte Suchstatusmeldung einschließlich null Treffern, Fokus ins Suchfeld beim Zurücksetzen.
- Programmatisch gekennzeichnete Pflichtfelder, verknüpfte Fehler und fokussierte Fehlerzusammenfassung. Loginfehler als Alert; korrekte Anzeigen-/Verbergen-Beschriftung.
- Dialoge mit Fokusrückgabe und durchgehend scrollbarem Inhalt. Der Formularbereich bleibt auch bei langen Fehlermeldungen erreichbar.
- Responsive Admin-Kopfzeile, Tabs und Dialogköpfe; öffentliche Fließtexte mit Standardschriftgröße; lokale Inter-Schrift bleibt erhalten.
- Tastaturzugängliche Tabellenbereiche, Umbruch langer Inhalte und Rücksicht auf reduzierte Bewegung.
- Serverseitige Links zu gepflegten barrierefreien Angeboten in der öffentlichen Kopfzeile.
- Vollständigkeitsprüfung der Seiten-Nutzdaten und Schutz vor dem Leeren veröffentlichter Seiten. Vorlagen mit unausgefüllten Platzhaltern werden nicht veröffentlicht.
- Medienvalidierung für lokale Pfade und signlanguage.alangu.de; sichtbarer Video-Direktlink.
- Drei neue Vorlagen im Admin bei leeren Textfeldern über „Vorlage einfügen“. Bestehende Inhalte bleiben erhalten.
- Gitea prüft vor dem Image-Build TypeScript, Linting, Unit-Tests, beide npm-Abhängigkeitsbäume und Browser-/API-Regressionen am gebauten Standalone-Server.
- Policy-APIs validieren Datentypen, Textlängen und fehlerhaftes JSON und antworten bei ungültigen Eingaben mit HTTP 400.
- Die Prisma-CLI im Docker-Image erhält eine eigene gesperrte Abhängigkeitsliste. Der auf @prisma/config begrenzte Override auf deepmerge-ts 8.0.2 schließt die zuletzt gemeldete Abhängigkeitslücke.
## Nachweise
- TypeScript und ESLint: keine Fehler. Die bisherigen any-Typwarnungen in den Policy-APIs wurden durch typisierte Eingabevalidierung beseitigt.
- Sechs Unit-/Integrationstests erfolgreich: Sitzungswiderruf, Medienvalidierung, Seitenschutz, Benutzervalidierung, Policy-Eingaben und Prisma-Konfiguration einschließlich wiederholter Migrationen.
- Acht Browser-/API-Tests im Gesamtlauf gegen den gebauten Produktions-Standalone-Server erfolgreich. Enthalten sind mobile Ansichten, Dunkelmodus, wiederholtes Öffnen/Schließen von Dialogen, Fokusrückgabe, Tastaturnavigation, vergrößerter Text und Textabstände sowie Berechtigungs- und API-Prüfungen.
- Keine axe-Verstöße in den geprüften Beispielen für WCAG 2 A/AA und WCAG 2.1 AA. Geprüft: öffentliche Übersicht, Login, einzelne Erklärung, Informationsseiten und Adminformulare, unter anderem bei 320 Pixeln; ausgewählte Seiten und Benutzerdialog zusätzlich im Dunkelmodus.
- Die Screenshotkontrolle fand trotz zunächst erfolgreichem axe-Test einen kollabierten mobilen Formularbereich. Dieser wurde korrigiert und mit einem tatsächlichen Fokus-/Eingabetest abgesichert.
- Produktionsbuild und Linux-Docker-Build erfolgreich, einschließlich Node.js-Middleware. Lokales Image: syncova-policies:review-20260911.
- Docker-Laufzeitprüfung mit eigener temporärer Datenbank: alle zehn Migrationen angewendet, Admin angelegt, /auth/signin liefert HTTP 200. Wiederholtes migrate deploy meldet keine ausstehenden Migrationen. Testcontainer und anonymes Testvolume anschließend entfernt.
- npm audit: null bekannte Schwachstellen im Hauptprojekt und im gesonderten Prisma-CLI-Lockfile (Stand 11.09.2026). Das ist keine Prüfung der Betriebssystempakete im Container.
- git diff --check ohne Fehler.
Die Browser-Tests verwenden eine neue temporäre SQLite-Datenbank und eigene Ausgabeordner .next-e2e beziehungsweise .next-e2e-production auf Port 3219. Bestehende Daten und Zugangsdaten wurden nicht verändert. Kein Git-Push oder Deployment durchgeführt.
## Verbleibende Punkte
Die ursprünglich drei hohen npm-Meldungen derselben Prisma-Abhängigkeitskette sind behoben. Der begrenzte Override auf deepmerge-ts 8.0.2 ist mit dem tatsächlichen Prisma-Konfigurationsloader und wiederholten Migrationen unter Windows sowie mit Migrationen im Linux-Container geprüft. Version 8 verändert unter anderem das Zusammenführen von Maps; die hier verwendete Konfiguration nutzt normale Objekte. Bei einem späteren Prisma-Update ist der Override erneut zu prüfen und möglichst zu entfernen. Siehe [offizielle Versionshinweise zu deepmerge-ts 8](https://github.com/RebeccaStevens/deepmerge-ts/releases/tag/v8.0.0).
Docker meldet einen Hinweis zum bestehenden Build-Argument NEXTAUTH_SECRET. Sein Standardwert ist ausschließlich ein öffentlicher Build-Platzhalter; echte Secrets müssen weiterhin erst zur Laufzeit gesetzt und dürfen nicht als Build-Argument übergeben werden.
Die Tests sind keine vollständige EN-301-549-/Screenreaderprüfung. Produktive Texte, Videoinhalt/-player, Leichte Sprache und gegebenenfalls PDFs benötigen weiterhin die fachliche und manuelle Abnahme. Kein Konformitätsstatus wurde automatisch bestätigt oder veröffentlicht.
Ein eigenständiger redaktioneller Entwurfs-/Freigabeworkflow mit Versionierung ist nicht implementiert. Der neue Schutz verhindert unvollständige Aktualisierungen und das Leeren bereits veröffentlichter Seiten.
Alte Sitzungen ohne den neuen Ausgabezeitpunkt werden nach dem Deployment abgewiesen: einmal neu anmelden. Bestehende Passwörter bleiben gültig. Auch Kontoänderungen erfordern eine neue Anmeldung.
## Befehle
1. npm ci
2. npx prisma generate
3. npm run typecheck
4. npm run lint
5. npm test
6. npx playwright install chromium
7. npm run test:e2e:prod
8. npm audit --audit-level=high
9. npm audit --prefix docker/prisma-cli --audit-level=high
10. docker build -t syncova-policies:review-20260911 .
Die Markdown-Vorlagen und redaktionellen Hinweise liegen in docs/review-2026-09-09.