Files
MindSift/Doku/sharing-and-permissions.md
T
sandrodachandClaude Opus 5.5 73fad1c5db
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 2m36s
feat(tasks): assign tasks in shared lists, unified people search, list avatars
- Tasks in shared task lists can be assigned to one or more people with access
  (task_assignees); assignments are pruned whenever access is lost
- UserAutocomplete: type-to-search everywhere, nothing before typing, max 3 results,
  first match preselected
- Task list and list tabs: avatar stack of members and round monochrome counter
- Shared list items remember who added them (list_items.created_by)
- Doku/ui-patterns.md documents the shared UI patterns

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 20:26:55 +01:00

4.4 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.
  • Aufgaben-Zuweisungen hängen am Zugriff: Verliert jemand den letzten Zugriffsweg auf eine Aufgabenliste, entfernt der Server ihn aus allen Zuweisungen dieser Liste (modules/tasks.md).
  • 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.