Files
Wegwichtel/docs/agents/GRUPPENBEARBEITUNG.md
T
Florian Zumpe 31768ae907
Sonarqube Scanner / Prepare environment (push) Successful in 6s
Sonarqube Scanner / Build and test (push) Successful in 27s
Sonarqube Scanner / Deploy to Server (push) Failing after 7s
Sonarqube Scanner / SonarQube analysis (push) Failing after 1m14s
group editor implemented
2026-10-18 16:33:12 +02:00

5.3 KiB

Agent-Hinweise zur Gruppenbearbeitung

Implementierter erster Stand: gemeinsame serverseitige Kopien von eigenen und veröffentlichten Strecken, acht Unicode-Wichtel im Einladungscode, Drehrad-Eingabe, Sitzungen, Rollen owner/member, Codewechsel und Widerruf. Bedienung und Einspielen: Gruppenbearbeitung.md.

Beizubehalten

  • Originale bleiben unverändert; keine Schreibrechte auf freigegebene Strecken öffnen. Neue gemeinsame Kopien brauchen erneut die normale Moderationsfreigabe.
  • creator_id bleibt Ersteller-Metadatum. Eigentums-/Mitgliedsrechte werden durch zufällige Sitzungsgeheimnisse geprüft. Niemals Rechte anhand einer frei übermittelten creator_id oder eines von einem Client behaupteten Rollenfelds vergeben.
  • Sitzungsgeheimnisse nur als Hash serverseitig und als HttpOnly-/SameSite-Strict- Cookie auf dem Client speichern; bei HTTPS zusätzlich Secure. Nicht ausgeben.
  • Einladungscodes haben acht der vorhandenen neun Symbole, werden mit randomInt gewählt und nur gehasht gespeichert. Gültigkeit eine Stunde; falsche Versuche sind begrenzt. Variationselektoren ändern die Unicode-Zuordnung nicht.
  • Schutz auch auf den ursprünglichen /api/routes/...-Adressen für alle Gruppen- Dateien durchsetzen. Anders geschriebene IDs (führende Nullen, Prozentkodierung, Exponentialschreibweise, Groß-/Kleinschreibung der Pfade) dürfen ihn nicht umgehen.
  • Gemeinsame Entwürfe aus öffentlichen Listen ausschließen. Änderungen verwenden die geladene Gruppenrevision als If-Match. Hintergrundlisten dürfen diese Bearbeitungsrevision nicht auf einen neueren Stand setzen. Konflikte zeigen, ohne ungespeicherte Eingaben zu ersetzen. Schreibanfragen bis zum Abschluss sperren.
  • Codewechsel entfernt nur die alte Einladung, Gruppenschließung entzieht auch bestehenden Mitbearbeitern Rechte. Besitzer behalten Zugriff. Gemeinsame Strecken nicht über die normalen Delete-/Restore-Endpunkte entfernen/wiederherstellen.
  • Gruppenzugang benötigt Internet. Lokale Entwürfe weiter sofort anzeigen und ihre Dateien erst bei Bedarf bzw. beim Übertragen laden.
  • Rechtliche Hinweise zu Sitzungs-Cookies und serverseitigen Gruppenentwürfen statisch auf Deutsch halten; Bedienung vollständig in Deutsch und Englisch.

Weitere Aufgaben

  • Wiederherstellung des eröffnenden Zugangs nach Cookie-/Geräteverlust und eine ausdrücklich autorisierte Eigentumsübertragung entwickeln.
  • Einzelne Mitglieder verwalten und gezielt entfernen; beigetretene Sitzungen sind derzeit nur gemeinsam über „Gruppe schließen“ widerrufbar.
  • Automatisches Zusammenführen bzw. feinere Konflikte und transaktionale Mehrdatei-Übertragungen evaluieren. Bereits erfolgreiche Teiländerungen können bei einem späteren Fehler bestehen bleiben. Neue Routen-POSTs sind noch nicht gegen verlorene Erfolgsantworten idempotent.
  • Expliziten unabhängigen Moderationszugang für private Gruppenmedien und einen Ablauf zum Anfordern ihrer Veröffentlichung ergänzen; keinen Rechte-Bypass anhand frei setzbarer Header oder beliebiger Basic-Auth-Header einführen.
  • Aufbewahrung und Bereinigung verwaister Gruppen, Sitzungen und Kopien sowie weitergehende Quoten und verteilte Sperren für einen Mehrprozessbetrieb planen.
  • Der Gruppen-Code ist eine Einladung, kein persönlicher Identitätsnachweis. Rechteprüfung für einzelne Inhalte bleibt eine getrennte offene Aufgabe.

Stationssperren und zurückgehaltene Änderungen

  • src/services/point-locks.js verwaltet atomare JSON-Sperrdateien pro Station mit creator_id, Sitzungshash und zufälligem Bearbeitungsschlüssel. Rechte nicht allein anhand der creator_id prüfen. Übernahmen brauchen eine bestätigte, vergleichende Ersetzung des gerade angezeigten Schlüssels; während laufender Speicherung weder freigeben noch übernehmen oder die Gruppe schließen.
  • Alle Stations-Schreibpfade einschließlich Bilder/Ton, Entfernung und Umordnung durch guardPoint schützen, auch bei alternativen URL-Schreibweisen.
  • X-Poi-Lock und If-Poi-Match sind Pflicht. Der Inhaltsabdruck berücksichtigt auch tatsächliche Dateibytes. Antwortheader X-Poi-Version/X-Poi-Id nach erfolgreichen Teiländerungen aktualisieren. Stations-Schreibzugriffe verwenden diese Prüfung anstelle des streckenweiten If-Match, damit verschiedene Stationen unabhängig bearbeitbar sind. Das Einprozessmodell bleibt erforderlich.
  • public/js/group-points.js sichert Entwürfe inklusive File/Blob und Entfernungsvormerkungen vor dem Senden in IndexedDB. Transaktionsabschluss abwarten; bei Quotenfehlern niemals erfolgreiche Sicherung behaupten.
  • Entwürfe auch ohne Netz bzw. nach verlorenem Zugang anzeigen. Erst nach erneutem Sperrerwerb und Inhaltsvergleich senden. Bei Abweichungen Vergleich mit ausdrücklicher Bestätigung; keine automatische Wiederholung/Überschreibung.
  • Datei-Entfernungen bei Gruppen zunächst vormerken. Bereits quittierte Übertragungen aus der Warteliste nehmen. Die ursprüngliche Vergleichsbasis behalten, bis sämtliche Änderungen erfolgreich übertragen wurden.
  • Weiter offen: atomare Mehrdatei-Übertragungen/Idempotenz bei verlorenen Erfolgsantworten, gezieltes Zusammenführen einzelner Felder und Auflösung entfernter Stationen sowie verteilte Sperren. Eine nachfolgende Aufnahme kann nicht ohne Einschränkungen zurückgerufen werden.