Ausgeblendete Artikel bleiben über ihre Adresse /news/… öffentlich lesbar #95

Open
opened 2026-10-14 20:10:36 +00:00 by claude · 0 comments
Collaborator

Was falsch ist

In der Redaktion lässt sich ein Artikel „ausblenden“. Er verschwindet dann aus der News-Liste der Homepage – über seine direkte Adresse /news/{slug} ist er aber weiter lesbar.

Warum

Der öffentliche Endpunkt GET /api/articles/slug/{slug} (ArticleResource.bySlug, @PermitAll) holt den Artikel über ArticleRepository.findBySlug – das sucht nur nach dem Slug (find("slug = ?1", slug)) und prüft published nicht. Die Homepage-Seite news/[slug].astro zeigt, was der Endpunkt liefert. Die Liste (GET /api/articles) filtert dagegen richtig.

Wer die Adresse kennt – geteilter Link, Suchmaschine, Verlauf –, liest den ausgeblendeten Artikel also weiter.

Stand der Prüfung

Im Code gelesen, nicht gemessen (14.10.2026). Der E2E-Test cms-redaktion.spec.ts prüft nach dem Ausblenden nur die Liste, nicht die Einzeladresse.

Was es werden soll

Ein ausgeblendeter Artikel ist öffentlich nicht erreichbar: /news/{slug} antwortet mit 404 wie ein unbekannter. In der Redaktion (/articles/all) bleibt er sichtbar. Dazu ein Backend-Test und im E2E-Test die Gegenprobe auf die Einzeladresse.

Gefunden beim Nachziehen der Redaktions-E2E (ADR 0026).

## Was falsch ist In der Redaktion lässt sich ein Artikel „ausblenden“. Er verschwindet dann aus der News-Liste der Homepage – über seine direkte Adresse `/news/{slug}` ist er aber weiter lesbar. ## Warum Der öffentliche Endpunkt `GET /api/articles/slug/{slug}` (`ArticleResource.bySlug`, `@PermitAll`) holt den Artikel über `ArticleRepository.findBySlug` – das sucht nur nach dem Slug (`find("slug = ?1", slug)`) und prüft `published` nicht. Die Homepage-Seite `news/[slug].astro` zeigt, was der Endpunkt liefert. Die Liste (`GET /api/articles`) filtert dagegen richtig. Wer die Adresse kennt – geteilter Link, Suchmaschine, Verlauf –, liest den ausgeblendeten Artikel also weiter. ## Stand der Prüfung **Im Code gelesen, nicht gemessen** (14.10.2026). Der E2E-Test `cms-redaktion.spec.ts` prüft nach dem Ausblenden nur die Liste, nicht die Einzeladresse. ## Was es werden soll Ein ausgeblendeter Artikel ist öffentlich nicht erreichbar: `/news/{slug}` antwortet mit 404 wie ein unbekannter. In der Redaktion (`/articles/all`) bleibt er sichtbar. Dazu ein Backend-Test und im E2E-Test die Gegenprobe auf die Einzeladresse. Gefunden beim Nachziehen der Redaktions-E2E (ADR 0026).
Sign in to join this conversation.
No description provided.