docs(15): WINDOWS #10 geschlossen — Browser-Gegenprobe nach dem Fix bestanden

Der am Vormittag gefundene Zugriffs-Guard-Defekt ist behoben (260907-e8k) und im
echten Browser gegen ein frisch gebautes Web-Image nachgeprueft.

nutzer2 ohne Freigabe bekommt jetzt auf /modules/tender-radar, dessen Unterseiten
my-sources und settings sowie auf /modules/dkv-fleet die 403-Seite als
Serverantwort. Auf /modules/cert-manager, wo er eine Freigabe hat, kommt er
weiterhin durch — das ist die Gegenprobe dagegen, dass die Sperre zu weit greift.
admin sieht alle vier Adressen unveraendert, nutzer1 sieht Meine Quellen mit allen
drei Abschnitten; die Phase-17-Funktion ist unbeschaedigt.

Im Bericht zusaetzlich festgehalten, dass ein erster Messversuch per fetch() aus der
laufenden Seite heraus faelschlich alle Seiten als gesperrt meldete, auch fuer den
Administrator. Der Aufruf fuehrt die Sitzung nicht wie eine echte Navigation mit.
Alle berichteten Zahlen stammen aus echten Seitenaufrufen.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K5jtbGzC5Sf9npJ3JCjKhq
This commit is contained in:
2026-09-07 10:40:48 +02:00
parent 9e5445e6b7
commit 0645cac618
3 changed files with 38 additions and 12 deletions
@@ -4,7 +4,8 @@ kind: uat-nachtrag
date: 2026-09-07
windows_addressed: [1, 2, 3]
windows_opened: [10]
result: 2 von 3 bestanden, 1 mit Befund
windows_closed_later: [10]
result: 2 von 3 bestanden, 1 mit Befund — Befund am selben Tag behoben und gegengeprueft
---
# Phase 15 — Browser-Gegenproben, nachgeholt am 2026-09-07
@@ -119,11 +120,36 @@ Diese laufen am Guard vorbei. Im Browser als `nutzer2` **ohne** Freigabe gemesse
Beleg: `uat-2026-09-07/befund-modul-eigene-route-ohne-freigabe.png`
**Erwartete Behebung:** Die Zugriffsprüfung gehört in ein gemeinsames Layout über
allen Modulrouten (etwa `(portal)/modules/layout.tsx` mit Auflösung des Modul-Slugs
aus dem Pfad) statt in die einzelne Seitenkomponente der generischen Route.
**Behoben am 2026-09-07** (Quick-Task `260907-e8k`, Commits `4a23e13`, `69b6418`).
Umgesetzt wurde nicht ein einzelnes Layout mit Pfadauflösung, sondern je ein `layout.tsx`
pro Modulverzeichnis mit fest eingetragenem Slug — ein Layout deckt in Next.js alle
verschachtelten Unterrouten automatisch mit ab, und der Slug steht damit explizit im Code
statt aus dem Pfad geraten zu werden. Das 403-Markup liegt jetzt einmal als gemeinsame
Komponente vor, die generische Route nutzt dieselbe. Ein Test liest das Modulverzeichnis
aus und verlangt für jedes nicht-dynamische Unterverzeichnis eine `layout.tsx`, damit ein
künftiges Modul die Lücke nicht erneut aufreißt.
### Gegenprobe im Browser nach dem Fix (2026-09-07)
Frisch gebautes Web-Image, echter Chrome, dieselben Konten:
| Konto | Adresse | Ergebnis |
|---|---|---|
| `admin` (SUPER_ADMIN) | `/modules/tender-radar`, `/modules/tender-radar/my-sources`, `/modules/dkv-fleet`, `/modules/procurement/tender-radar` | alle **unverändert offen** — die Sperre trifft niemanden zu viel |
| `nutzer1` (Freigabe über Gruppe) | `/modules/tender-radar/my-sources` | offen, alle drei Abschnitte da — Phase-17-Funktion unbeschädigt |
| `nutzer2` (keine Freigabe) | `/modules/tender-radar`, `/modules/tender-radar/my-sources`, `/modules/tender-radar/settings`, `/modules/dkv-fleet` | alle **gesperrt**, 403-Seite als Serverantwort |
| `nutzer2` auf `/modules/cert-manager` (dort **hat** er eine Freigabe) | | **offen** — die Gegenprobe gegen Überschießen |
Beleg: `uat-2026-09-07/w10-fix-my-sources-gesperrt.png`
**Messhinweis für spätere Prüfungen:** Ein erster Versuch, die Adressen per `fetch()` aus der
laufenden Seite heraus zu prüfen, meldete fälschlich *alle* Seiten als gesperrt — auch für den
Administrator. Der Aufruf führt die Sitzung nicht so mit, wie eine echte Navigation es tut. Die
Zahlen oben stammen ausschließlich aus echten Seitenaufrufen. Wer das nachprüft, sollte nicht
per `fetch` messen.
## Ergebnis
WINDOWS #1 und #2 sind geschlossen. #3 ist als Durchlauf erledigt; der dabei
gefundene Defekt ist als #10 eigenständig erfasst und bleibt offen.
WINDOWS #1 und #2 sind geschlossen. #3 ist als Durchlauf erledigt. Der dabei gefundene
Defekt wurde als #10 erfasst, am selben Tag behoben und im Browser gegengeprüft — er ist
damit ebenfalls geschlossen.
Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB