Artikel-Entwürfe sind auf der Homepage abrufbar #131

Open
opened 2026-10-23 09:57:55 +00:00 by claude · 1 comment
Collaborator

Was passiert: Ein Artikel, der noch nicht veröffentlicht ist, lässt sich auf der Homepage unter /news/<slug> lesen, sobald man den Slug kennt oder errät. Die Slugs entstehen aus dem Titel und sind darum leicht zu erraten.

Ursache: GET /api/articles/slug/{slug} ist öffentlich (@PermitAll), und ArticleRepository.findBySlug sucht nur nach dem Slug, nicht danach, ob der Artikel veröffentlicht ist (backend/src/main/java/ch/sffs/tt/cms/repository/ArticleRepository.java:26). Die öffentliche Liste GET /api/articles filtert dagegen richtig (listPublishedByCategory).

Erwartet: Für einen Entwurf antwortet der öffentliche Abruf mit 404, genau wie für einen Slug, den es nicht gibt.

Prüfen:

  1. Im CMS einen Artikel anlegen und nicht veröffentlichen.
  2. Auf der Homepage /news/<slug-des-artikels> aufrufen.
  3. Heute erscheint der Artikel, erwartet ist „nicht gefunden“.

Gefunden am 23.10.2026 bei der Neuordnung der REST-Pfade; dort wird der Aufruf zu GET /api/public/articles/{slug}.

**Was passiert:** Ein Artikel, der noch nicht veröffentlicht ist, lässt sich auf der Homepage unter `/news/<slug>` lesen, sobald man den Slug kennt oder errät. Die Slugs entstehen aus dem Titel und sind darum leicht zu erraten. **Ursache:** `GET /api/articles/slug/{slug}` ist öffentlich (`@PermitAll`), und `ArticleRepository.findBySlug` sucht nur nach dem Slug, nicht danach, ob der Artikel veröffentlicht ist (`backend/src/main/java/ch/sffs/tt/cms/repository/ArticleRepository.java:26`). Die öffentliche Liste `GET /api/articles` filtert dagegen richtig (`listPublishedByCategory`). **Erwartet:** Für einen Entwurf antwortet der öffentliche Abruf mit `404`, genau wie für einen Slug, den es nicht gibt. **Prüfen:** 1. Im CMS einen Artikel anlegen und nicht veröffentlichen. 2. Auf der Homepage `/news/<slug-des-artikels>` aufrufen. 3. Heute erscheint der Artikel, erwartet ist „nicht gefunden“. Gefunden am 23.10.2026 bei der Neuordnung der REST-Pfade; dort wird der Aufruf zu `GET /api/public/articles/{slug}`.
Author
Collaborator

Behoben mit der CMS-Etappe der URL-Neuordnung, in main seit 28.10. (dd97573). Ein Entwurf (ausgeblendeter Artikel) ist öffentlich nicht mehr abrufbar: GET /api/public/articles/{slug} gibt für ihn 404.

Prüfbar auf Staging, sobald main dort läuft:

  1. Im CMS (https://content.staging.mydevlab.work) als Admin oder Redaktion unter „Artikel“ einen News-Artikel anlegen. Er erscheint auf https://sffs-tt-basel.staging.mydevlab.work/news.
  2. Den Artikel in der Liste ausblenden. Sein Datum bleibt stehen.
  3. Die Adresse /news/<slug> des Artikels auf der Homepage aufrufen: Die Seite ist nicht zu finden. Auch in der News-Liste fehlt er.
  4. Wieder einblenden: Der Artikel ist unter /news/<slug> wieder da, mit demselben Datum.
Behoben mit der CMS-Etappe der URL-Neuordnung, in `main` seit 28.10. (`dd97573`). Ein Entwurf (ausgeblendeter Artikel) ist öffentlich nicht mehr abrufbar: `GET /api/public/articles/{slug}` gibt für ihn `404`. Prüfbar auf Staging, sobald `main` dort läuft: 1. Im CMS (https://content.staging.mydevlab.work) als Admin oder Redaktion unter „Artikel“ einen News-Artikel anlegen. Er erscheint auf https://sffs-tt-basel.staging.mydevlab.work/news. 2. Den Artikel in der Liste ausblenden. Sein Datum bleibt stehen. 3. Die Adresse `/news/<slug>` des Artikels auf der Homepage aufrufen: Die Seite ist nicht zu finden. Auch in der News-Liste fehlt er. 4. Wieder einblenden: Der Artikel ist unter `/news/<slug>` wieder da, mit demselben Datum.
Sign in to join this conversation.
No description provided.