Der Weg zu stabiler, dann permanenter Version für granular_anonymous_and_logged_in_groups_permissions

Dieses Thema ist ein Begleiter zu Granular group-based permissions for anonymous and logged in users und befindet sich noch in Arbeit (WIP).


Es gibt immer noch einige Stellen in verschiedenen Codebasen für Core, Plugins und Themes, die direkt auf die Gruppen-ID everyone oder (0) verweisen, ohne diese anstehende Änderung zu berücksichtigen oder ohne user.in_any_groups? oder verschiedene Guardian-Methoden zu verwenden, die zur Handhabung dieses Falls gedacht sind.

Zur schnellen Referenz einige automatische Gruppen-IDs:

  • 0 - everyone
  • 1 - admins
  • 2 - moderators
  • 3 - staff
  • 4 - anonymous_users
  • 5 - logged_in_users

Dieses Thema dient als zentraler Ort, um die Fixes für dieses System im Blick zu behalten, während wir uns der stabilen Version nähern. Custom-Plugins und Themes für Discourse-Kunden werden hier nicht erfasst; dafür habe ich intern eine separate Liste.

Hochprioritäre Probleme

Von Moin gemeldetes Problem:

  • Core
    • About - apply_excluded_groups wird nur verwendet, um ausgewählte Moderatoren & Admins aus den Gruppen in about_page_hidden_groups auszublenden. Es macht keinen Sinn, Pseudogruppen wie 0|4|5 hier zu verwenden; sie sollten zu disallowed_groups hinzugefügt werden. Wir müssen auch die Beschreibung der Einstellung aktualisieren, da sie irreführend ist.

Core-Plugins

  • Discourse Templates
      • can_use_private_templates? verweist immer noch direkt auf everyone und verwendet die _map-Abkürzung für Site-Einstellungen nicht.
  • Discourse AI
      • can_see_summary? in Guardian-Erweiterungen verwendet user.in_any_groups? nicht.
      • can_attach? in AiBot::Playground verwendet user.in_any_groups? nicht.
      • addTopicAdminMenuButton in ai-translation-topic-admin betrachtet currentUser.groups auf der Client-Seite, was nicht zuverlässig ist. Stattdessen sollte eine serverseitige Prüfung für content_localization_allowed_groups durchgeführt werden.
  • Discourse Assign. Hier gibt es ziemlich viele Probleme.
    • Statt user_ids_in_groups in AssignmentPermissions sollten wir user_ids_in_groups verwenden (Hinweis: Im Originaltext steht hier identisch, vermutlich ein Tippfehler im Source, aber ich übersetze wörtlich: Statt user_ids_in_groups in AssignmentPermissions sollten wir user_ids_in_groups verwenden).
    • assign_allowed_on_groups sollte 0|4|5 zu disallowed_groups hinzugefügt bekommen; keine davon macht hier Sinn, es sind nur konkrete Gruppen relevant.

Andere Plugins

  • Activity Pub
    • Clientseitige Prüfung von user.groups und everyone in showStatusToUser entfernen. Ändere activity_pub_post_status_visibility_groups so, dass standardmäßig 4|5 gesetzt ist.
  • Suggested Edits
    • user_in_suggested_edits_group? muss user.in_any_groups? in GuardianExtensions verwenden. Füge 1 zu mandatory_groups von suggested_edits_review_groups hinzu und entferne den speziellen Admin-Fall in can_review_suggested_edits_in_topic_list.
    • Füge 0|4|5 zu disallowed_groups von suggested_edits_review_groups und suggested_edits_suggest_groups hinzu; diese Einstellung ist eigentlich nicht für die Verwendung mit diesen Pseudogruppen gedacht.
  • Resenha

Themes

Komponenten

Niedrigprioritäre Probleme

  • Core
    • is_in_edit_topic_groups in TopicGuardian sollte die _map-Erweiterung für die Site-Einstellung verwenden.
    • Roleable#whisperer? sollte user.in_any_groups? verwenden und die Admin-Prüfung entfernen; füge 1 als mandatory_values zur Einstellung whispers_allowed_groups hinzu.
    • Füge 0|4 zu disallowed_groups für die Site-Einstellung allow_solved_in_groups hinzu; dies betrifft nur PMs (Private Messages).
    • Füge 0|4|5 zu disallowed_groups für about_page_extra_groups hinzu; dies soll nur mit konkreten Gruppen auf der About-Seite umgehen.
    • Hinweis in can_view? für PresenceChannel: Wir müssen die Group::AUTO_GROUPS[:everyone]-Prüfung entfernen, wenn diese anstehende Änderung auf Permanent wechselt.

Core-Plugins

  • Chat
  • Assign
    • Entferne add_model_callback(Group) in plugin.rb; es ist irrelevanter/veralteter Code, der Gruppen-Namen statt IDs betrachtet.

Andere Plugins

  • Code Review
    • Die Prüfung can_review_code? auf code_review_allowed_groups verwendet die _map-Erweiterung nicht und verwendet auch user.in_any_groups? nicht. Füge 1 zu mandatory_groups für die Einstellung hinzu und entferne die spezielle Admin-Prüfung im Guardian. Füge 0|4|5 zu disallowed_groups hinzu.
  • Needs Love
    • Die Prüfung can_needs_love? auf needs_love_allowed_groups verwendet die _map-Erweiterung nicht und verwendet auch user.in_any_groups? nicht. Füge 1 zu mandatory_groups für die Einstellung hinzu und entferne die spezielle Admin-Prüfung im Guardian. Füge 0|4|5 zu disallowed_groups hinzu.
  • Staff Alias
    • Die Prüfung can_post_as_staff_alias auf staff_alias_allowed_groups verwendet die _map-Erweiterung nicht und verwendet auch user.in_any_groups? nicht. Füge 0|4|5 zu disallowed_groups hinzu.

Themes

Komponenten

Nächste Schritte für die Migration

TBA

2 „Gefällt mir“