Reservierung aufheben und offene Galerie entschieden

- Aufheben darf der Reservierende selbst (per Token-Link) und der
  Betreiber. Ein offener release-Endpunkt wäre die naheliegende, aber
  falsche Variante: dann löscht jeder Besucher fremde Reservierungen, und
  weil reserved_by mitgeht, bleibt nicht mal nachvollziehbar, dass jemand
  reserviert hatte. Token wird beim Aufheben und beim Erledigen gelöscht,
  Vergleich mit compare_digest.
- Die Galerie bleibt frei zugänglich, ohne Zugangscode. Damit wird das
  Rate-Limit zur einzigen Bremse vor dem Reservieren-Endpunkt, und zwei
  Dinge gehören zwingend dazu: reserved_by erscheint öffentlich nur als
  "reserviert", und noindex/robots.txt verhindern, dass Fotos und Texte
  dauerhaft im Suchindex landen.

projekt.md bei /release entsprechend präzisiert.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GR4bNaj9GtRu57J4Niii8o
This commit is contained in:
2026-08-29 21:50:34 +02:00
co-authored by Claude Opus 5
parent da4267c369
commit 3cf6903df5
2 changed files with 53 additions and 24 deletions
+5
View File
@@ -79,8 +79,13 @@ Eine schlanke, mobile-optimierte Web-App zum Katalogisieren, Präsentieren und R
### Reservierung & Status
- `POST /api/v1/items/{id}/reserve`
- **Body:** `{"reserved_by": "Familie Meier"}`
- **Response:** enthält das `reservation_token` daraus wird der Link zum
Aufheben gebildet.
- `POST /api/v1/items/{id}/release`
- Setzt Status zurück auf `available` und löscht `reserved_by`.
- **Erlaubt für:** den Reservierenden (mit gültigem `token`) oder den
angemeldeten Betreiber. Ohne beides: `403`. Sonst könnte jeder Besucher
fremde Reservierungen löschen.
- `POST /api/v1/items/{id}/mark-given`
- Setzt Status auf `given_away`.