Files
MindSift/Doku/sharing-and-permissions.md
T
sandrodachandClaude Opus 5.5 08d9b2dc77
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 1m13s
feat(workspace): allow sharing notes and shared folders as editor
The share dialog for notes and shared folders now offers "Bearbeiten" and
"Nur Lesen" and stores write/read accordingly. Editors already edit through
the sync engine since phase 2.

Adds e2e/share.e2e.mjs: shares a note as editor through the dialog and checks
that the recipient can edit it; e2e/run.sh runs both browser tests.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 12:40:22 +01:00

4.2 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) alles, Freigaben, löschen Inhalt, Struktur, Titel nur lesen Benutzer, Gruppen
Geteilter Ordner (workspace_folder_shares) alles Notizen darin bearbeiten nur lesen Benutzer, Gruppen
  • Notizen und Ordner: Die effektive Rolle berechnet Store.DocRole (Eigentümer, Eigentümer des geteilten Ordners = Bearbeiter, direkte Freigabe, Gruppenfreigabe, Ordnerfreigabe; höchste gewinnt). Im Freigabe-Dialog sind für Notizen und geteilte Ordner „Bearbeiten“ und „Nur Lesen“ wählbar (gespeichert als write/read). Bearbeiter ändern Inhalt, Struktur und Titel über die Sync-Engine; Leser sehen Änderungen live.
  • 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 setzt team_id, falls es noch leer ist.

Aufgabenlisten teilen (Details)

  1. Eigentümer öffnet „Teilen“ an der Liste, wählt Gruppe oder Benutzer und die Stufe Bearbeiten oder Nur Lesen.
  2. POST /task-lists/{id}/shares speichert permission; erneutes Hinzufügen desselben Ziels ändert die Stufe.
  3. GET /task-lists liefert je Liste permission (owner/editor/viewer). Das Frontend blendet für viewer alle Eingabemöglichkeiten aus und zeigt „Nur Lesen“.
  4. 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 in revoked_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.