„Alle Beiträge und Themen löschen“ in Berechtigungen für eigene Inhalte und globale Inhalte aufteilen

Ich möchte vorschlagen, die Einstellung „Gruppen, die alle Beiträge und Themen löschen dürfen“, in spezifischere Berechtigungen aufzuteilen.

Derzeit ist die Einstellung sehr umfassend: Sie erlaubt ausgewählten Gruppen, von anderen Benutzern erstellte Beiträge und Themen zu löschen und auch gelöschte Beiträge/Themen einzusehen. Das ergibt Sinn für Moderatoren oder vertrauenswürdige Moderationsgruppen, ist jedoch zu mächtig für einen Anwendungsfall, bei dem Benutzer nur eine stärkere Kontrolle über ihre eigenen Inhalte haben sollen.

Zur Klarstellung: Ich meine keine endgültige Löschung/Hartlöschung aus der Datenbank.

Es geht mir hauptsächlich um das benutzerfreundliche Lösch- und Versionsverhaltensverhalten: Zum Beispiel, ob beim Löschen eines eigenen Beitrags durch einen Benutzer der übliche Platzhalter für gelöschte Beiträge verbleibt, ob vorherige Bearbeitungen über die Versionsverlauf-Oberfläche weiterhin zugänglich bleiben und ob es eine spezifischere Berechtigung geben könnte, dies nur für die eigenen Beiträge eines Benutzers zu verwalten.

Eine mögliche Aufteilung könnte lauten:

  1. Gruppen, die eigene Beiträge und Themen löschen dürfen
  2. Gruppen, die alle Beiträge und Themen löschen dürfen

Die erste Einstellung würde sich nur auf Inhalte beziehen, die vom aktuellen Benutzer erstellt wurden. Die zweite Einstellung würde das derzeitige breitere Verhalten für Gruppen beibehalten, denen vertraut wird, dass sie Inhalte anderer Benutzer löschen und gelöschte Inhalte einsehen können.

Dies würde es erleichtern, das Prinzip des geringsten Privilegs bei der Rollenkonzeption umzusetzen. Beispielsweise könnte eine Website wünschen, dass Benutzer mit TL4/Leader-Status oder eine benutzerdefinierte vertrauenswürdige Gruppe mehr Kontrolle über das Löschen ihrer eigenen Beiträge/Themen haben, ohne ihnen gleichzeitig moderationsähnliche Befugnisse über die Inhalte anderer Benutzer einzuräumen.

Mir ist bewusst, dass es dabei Schutzmaßnahmen geben müsste, insbesondere wenn das Löschen des ersten Beitrags ein Thema betrifft, das Antworten anderer Benutzer enthält. In solchen Fällen könnte Discourse die aktuelle Einschränkung beibehalten, eine Moderatoreneingriff erfordern oder die Berechtigung für eigene Inhalte auf Antworten/Themen ohne weitere Antworten beschränken.

Die Hauptanforderung ist eine Berechtigung für das Löschen/Versionsverlauf eigener Inhalte, die von der aktuellen globalen Löschberechtigung getrennt ist, damit Administratoren nicht zwischen der weichen Löschung durch normale Benutzer und einer viel umfassenderen Berechtigung „kann Beiträge/Themen anderer Benutzer löschen“ wählen müssen.

Ich vermute, ein Teil der Verwirrung hier liegt darin, dass es möglicherweise eine Unterscheidung zwischen verschiedenen „gelöschten Inhalt anzeigen“-Prüfungen gibt.

Bei PostGuardian scheint ein einzelner gelöschter Beitrag nicht allein dadurch sichtbar zu werden, dass der Benutzer in delete_all_posts_and_topics_allowed_groups ist, wenn man can_see_post? aufruft.

Beispielsweise läuft die Sichtbarkeit einzelner gelöschter Beiträge über:

def can_see_deleted_post?(post)
  return false if !post.trashed?
  return false if @user.anonymous?
  return true if is_staff?
  post.deleted_by_id == @user.id && @user.has_trust_level?(TrustLevel[4])
end

Das heißt, ein Nicht-Mitarbeiter mit Vertrauensstufe 2 (TL2), der in delete_all_posts_and_topics_allowed_groups ist, könnte nicht notwendigerweise jeden gelöschten Beitragstext über can_see_post? öffnen oder lesen.

Allerdings wird dieselbe Einstellung auch hier verwendet:

def can_see_deleted_posts?(category = nil)
  is_category_group_moderator?(category) ||
    @user.in_any_groups?(SiteSetting.delete_all_posts_and_topics_allowed_groups_map)
end

Das bedeutet, die Einstellung ist konzeptionell immer noch breiter gefasst als nur „Autoren können ihren eigenen Inhalt zurückziehen“. Sie scheint sowohl zum Löschen sichtbarer Beiträge anderer Benutzer als auch für zumindest einige Sichtbarkeits- oder Auflistungsfunktionen für gelöschte Beiträge verwendet zu werden.

Meine Sorge ist also weniger „diese Einstellung gibt auf jeden Fall in jedem Endpunkt jeden gelöschten Beitragstext preis“, sondern eher, dass die aktuelle Berechtigung mehrere Konzepte kombiniert:

  1. Löschen von Beiträgen/Themen anderer Benutzer;
  2. Anzeigen oder Auflisten gelöschter Beiträge/Themen in bestimmten Kontexten;
  3. Autoren mehr Kontrolle über ihren eigenen digitalen Fußabdruck geben.

Für meinen Anwendungsfall möchte ich nur das dritte Konzept.

Deshalb halte ich eine eigene Einstellung für den eigenen Inhalt für sauberer. Sie könnte es einem Benutzer ermöglichen, seine eigenen Beiträge/Themen zu löschen oder zurückzuziehen – unter Einhaltung bestehender Schutzmaßnahmen –, ohne breitere moderatorenähnliche Berechtigungen über den Inhalt anderer Benutzer oder die Sichtbarkeit gelöschter Inhalte zu gewähren.

Um das UI-Verhalten zu verdeutlichen, möchte ich Folgendes: Ich bitte nicht darum, dass gelöschte Inhalte für normale Nutzer sichtbar werden.

Für eine Berechtigung zum Löschen eigener Inhalte wäre das ideale Verhalten nutzerspezifisch:

  • Der Autor kann sehen, dass sein eigener Beitrag zurückgezogen/gelöscht wurde, vielleicht in der üblichen roten Gestaltung für gelöschte Beiträge oder im eingeklappten Zustand, damit er versteht, was passiert ist und den Beitrag wiederherstellen kann, falls eine Wiederherstellung erlaubt ist;
  • Mitarbeiter/Moderatoren behalten die für Audit- und Moderationszwecke angemessene Sichtbarkeit;
  • Normale Nutzer sollten keinerlei Spuren des gelöschten Inhalts sehen – weder den Beitragstext noch die Versionsgeschichte und idealerweise auch keinen Platzhalter für gelöschte Beiträge.

Die Unterscheidung, die ich fordere, ist also die Kontrolle des Autors über seinen eigenen sichtbaren Fußabdruck, ohne dass Nicht-Mitarbeiter Zugriff auf gelöschte Inhalte oder globale Befugnisse über Beiträge/Themen anderer Nutzer erhalten.

Ein weiterer feiner Unterschied betrifft die Versionshistorie.

Bei der Betrachtung von PostRevisor wird die Bearbeitungshistorie separat über PostRevision gespeichert. Daher schlage ich nicht vor, dass eine Berechtigung zum Löschen eigener Inhalte zwangsläufig auch Revisionseinträge endgültig löschen oder die Nachvollziehbarkeit einschränken sollte.

Die von mir vorgestellte Berechtigung bezieht sich vielmehr auf die Sichtbarkeit für normale Nutzer: Kann der Autor seinen eigenen Beitrag/das eigene Thema zurückziehen? Bleibt der Platzhalter für gelöschte Beiträge erhalten? Können normale Nutzer frühere Bearbeitungsinhalte einsehen? Und behalten Mitarbeiter/Moderatoren den für sie angemessenen Prüfungs- und Moderationszugriff (z. B. über „N VERSTECKTE ANTWORT ANZEIGEN")?

Es geht mir also nicht um folgende Unterscheidung:

  • „Nutzer alle Spuren aus der Datenbank löschen lassen"

sondern vielmehr um:

  • „Nutzern mehr Kontrolle über ihren eigenen sichtbaren Inhalt/Fußabdruck geben"
  • ohne ihnen gleichzeitig globale Befugnisse zu erteilen, Inhalte anderer Nutzer zu löschen oder gelöschte Inhalte allgemein einzusehen.