MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 8s
Remove outdated claims (CRDT, DocRooms, presence, .md files on disk) and document the actual architecture, API, permissions and known flaws. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
3.9 KiB
3.9 KiB
Teilen & Berechtigungen
Rollen
| Ebene | Werte | Bedeutung |
|---|---|---|
| Server | admin, member |
Admins verwalten Benutzer, Einladungen und Einstellungen (/admin/*). |
| Gruppe | admin, member |
Gruppen-Admins ändern/löschen die Gruppe und verwalten Mitglieder. Wer eine Gruppe anlegt, wird Admin. |
| Ressource | siehe unten | Eigentümer, Bearbeiter, Leser. |
Berechtigungen je Ressource
| Ressource | Eigentümer | Bearbeiter | Leser | Freigabe an |
|---|---|---|---|---|
Aufgabenliste (task_list_shares.permission) |
alles, löschen, (un)teilen | Aufgaben anlegen/ändern/abhaken/verschieben/löschen, Liste umbenennen, Spalten ändern | nur ansehen | Benutzer, Gruppen |
Geteilte Liste (list_shares.role) |
alles, löschen, (un)teilen | Einträge anlegen/ändern/abhaken/löschen | nur ansehen | Benutzer, Gruppen |
Notiz (doc_shares, doc_team_shares) |
schreiben | – | nur lesen | Benutzer, Gruppen |
Geteilter Ordner (workspace_folder_shares) |
schreiben | – | nur lesen | Benutzer, Gruppen |
- Notizen und Ordner sind absichtlich schreibgeschützt für Empfänger. Das erzwingt eine Migration beim Start (
permission = 'read'); Schreibpfade im Code sind tot (FLAW-17). - Bei Aufgabenlisten und Listen gilt: Hat jemand mehrere Zugriffswege (direkt und über Gruppen), zählt die höchste Stufe.
- Für Gruppen gilt die Freigabe für alle aktuellen und künftigen Mitglieder.
- Aufgabenlisten besitzen zusätzlich das Altfeld
team_id: Mitglieder dieser Gruppe haben ohne Freigabezeile Bearbeiterrechte. Eine Gruppenfreigabe über den Dialog setztteam_id, falls es noch leer ist.
Aufgabenlisten teilen (Details)
- Eigentümer öffnet „Teilen“ an der Liste, wählt Gruppe oder Benutzer und die Stufe Bearbeiten oder Nur Lesen.
POST /task-lists/{id}/sharesspeichertpermission; erneutes Hinzufügen desselben Ziels ändert die Stufe.GET /task-listsliefert je Listepermission(owner/editor/viewer). Das Frontend blendet fürvieweralle Eingabemöglichkeiten aus und zeigt „Nur Lesen“.- Der Server prüft unabhängig davon jeden Schreibzugriff (
403,storage.ErrTaskListReadOnly).
Bestehende Freigaben aus der Zeit vor dieser Stufe wurden mit editor migriert, behalten also ihr Verhalten.
Isolations-Modi (system_settings.sharing_mode)
Werte: strict_private, teams_only (Standard), open. Gedacht ist:
| Modus | Zweck |
|---|---|
strict_private |
Keine Sichtbarkeit zwischen Benutzern |
teams_only |
Freigaben nur zwischen Mitgliedern gemeinsamer Gruppen |
open |
Jeder kann für jeden freigeben |
Tatsächlich wird der Modus nur in GetDiscoverableUsers ausgewertet, und dort liefert teams_only bereits alle Benutzer. GET /collaborators ignoriert den Modus, und keine Freigabe-Funktion prüft ihn. Die Einstellung hat derzeit also kaum Wirkung (FLAW-10).
Entkoppelte Ablage geteilter Notizen und Ordner
- Geteilte Ordner: Der Ordner existiert einmal (
workspace_shared_folders); jeder Empfänger hat seinen eigenen Einhängepfad (workspace_folder_mounts.mount_path). Verschiebt ein Empfänger den Ordner, ändert sich nur sein Pfad. Der Unterpfad innerhalb des Ordners (documents.sub_folder_path) gilt für alle. - Einzelne Notizen: Jeder Empfänger kann eine geteilte Notiz in einen eigenen Ordner legen (
doc_user_folders); die Notiz des Eigentümers bleibt unberührt.
Sitzungen und Zugriff
- Tokens werden bei Passwortänderung, Rollenwechsel, Deaktivierung und „Alle Sitzungen beenden“ ungültig (
token_version); ausgeloggte Tokens landen inrevoked_tokens. - Registrierung nur per Einladungscode oder, wenn vom Admin freigeschaltet, offen. Das erste Konto wird immer Administrator.
- Bekannte Lücken in der Zugriffskontrolle: FLAW-01, FLAW-02, FLAW-03, FLAW-06, FLAW-07, FLAW-08, FLAW-24.