group code popup
Sonarqube Scanner / Prepare environment (push) Successful in 6s
Sonarqube Scanner / Build and test (push) Successful in 27s
Sonarqube Scanner / SonarQube analysis (push) Failing after 1m14s
Sonarqube Scanner / Deploy to Server (push) Successful in 10s

This commit is contained in:
Florian Zumpe
2026-10-18 17:24:41 +02:00
parent 31768ae907
commit 0e4cdfbd54
18 changed files with 400 additions and 49 deletions
+25 -1
View File
@@ -874,7 +874,7 @@ Siehe [Gruppenbearbeitung.md](Gruppenbearbeitung.md). Alle Gruppenantworten sind
| --- | --- |
| GET /api/groups | Gruppen der Sitzung auflisten; ohne Sitzung leere Liste |
| POST /api/groups | Mit routeId und creator_id eine unabhängige Kopie öffnen |
| POST /api/groups/join | Mit code (Array aus acht Unicode-Symbolen) und creator_id beitreten |
| POST /api/groups/join | Mit code (Array aus fünf Unicode-Symbolen; Wiederholungen erlaubt) und creator_id beitreten |
| POST /api/groups/:id/code | Als Besitzer neuen Einladungscode erzeugen |
| DELETE /api/groups/:id | Als Besitzer Einladung und Mitbearbeiterzugänge widerrufen |
@@ -911,3 +911,27 @@ von If-Match wird dort der Stationsinhalt geprüft. Erfolgreiche Antworten liefe
mehreren Dateioperationen jeweils weiterverwenden. Eine neue Station wird über
den bisherigen POST angelegt und vor den weiteren Dateioperationen gesperrt.
Die Versionsabdrücke berücksichtigen Dateibytes, nicht bloß URLs oder Metadaten.
### Fristen, Aktivität und Status
`GET /api/groups/routes/:routeId/pois/:poiId/lock` prüft eine Station innerhalb
der berechtigten Gruppe und liefert ohne Antwortkörper **204** (frei) oder
**423** (gesperrt). Nicht vorhandene Strecken/Stationen ergeben **404**, fehlende
Anmeldung/Berechtigung weiterhin **401/403**. Die Abfrage verlängert keine Sperre.
`POST` auf denselben Pfad mit `{ "heartbeat": true, "token": "<eigener Schlüssel>" }`
verlängert nur die eigene noch gültige Sperre und liefert **204**. Abgelaufene
oder fremde Sperren ergeben **423**. Die App meldet nur tatsächliche Interaktion
mit der Station, gebündelt alle 30 Sekunden. Nach 60 Minuten ohne Aktivität wird
die Datei entfernt. Eine Wartung beim Start und jede Minute räumt sie auch ohne
weitere Client-Anfragen auf. Laufende Schreibanfragen bleiben bis zu ihrem
Abschluss geschützt.
`GET /api/groups/:id/invitation` ist ausschließlich für die eröffnende Sitzung.
Antwort: `group`, `busy`, `expired`, `expiresAt` und, wenn im Prozess verfügbar,
`code`. Nach 30 Minuten werden Codes automatisch ersetzt, sobald alle Stationen
frei sind. Während einer Stationssperre wird auch manuelles Erneuern mit **423**
(`group-editing`) zurückgewiesen. Der bisherige Code läuft trotzdem ab;
bestehende Mitglieder bleiben berechtigt. Die Wartung und dieser Abruf führen
die Erneuerung aus. Klartext-Codes stehen nur im Prozessspeicher, dauerhaft wird
ausschließlich ihr Hash gespeichert.