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-everyone1-admins2-moderators3-staff4-anonymous_users5-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_groupswird nur verwendet, um ausgewählte Moderatoren & Admins aus den Gruppen inabout_page_hidden_groupsauszublenden. Es macht keinen Sinn, Pseudogruppen wie0|4|5hier zu verwenden; sie sollten zudisallowed_groupshinzugefügt werden. Wir müssen auch die Beschreibung der Einstellung aktualisieren, da sie irreführend ist.
- About -
Core-Plugins
- Discourse Templates
-
can_use_private_templates?verweist immer noch direkt aufeveryoneund verwendet die_map-Abkürzung für Site-Einstellungen nicht.
-
- Discourse AI
-
can_see_summary?in Guardian-Erweiterungen verwendetuser.in_any_groups?nicht.
-
can_attach?in AiBot::Playground verwendetuser.in_any_groups?nicht.
-
addTopicAdminMenuButtoninai-translation-topic-adminbetrachtetcurrentUser.groupsauf der Client-Seite, was nicht zuverlässig ist. Stattdessen sollte eine serverseitige Prüfung fürcontent_localization_allowed_groupsdurchgeführt werden.
-
- Discourse Assign. Hier gibt es ziemlich viele Probleme.
- Statt
user_ids_in_groupsinAssignmentPermissionssollten wiruser_ids_in_groupsverwenden (Hinweis: Im Originaltext steht hier identisch, vermutlich ein Tippfehler im Source, aber ich übersetze wörtlich: Stattuser_ids_in_groupsinAssignmentPermissionssollten wiruser_ids_in_groupsverwenden). assign_allowed_on_groupssollte0|4|5zudisallowed_groupshinzugefügt bekommen; keine davon macht hier Sinn, es sind nur konkrete Gruppen relevant.
- Statt
Andere Plugins
- Activity Pub
- Clientseitige Prüfung von
user.groupsundeveryoneinshowStatusToUserentfernen. Ändereactivity_pub_post_status_visibility_groupsso, dass standardmäßig4|5gesetzt ist.
- Clientseitige Prüfung von
- Suggested Edits
user_in_suggested_edits_group?mussuser.in_any_groups?inGuardianExtensionsverwenden. Füge1zumandatory_groupsvonsuggested_edits_review_groupshinzu und entferne den speziellen Admin-Fall incan_review_suggested_edits_in_topic_list.- Füge
0|4|5zudisallowed_groupsvonsuggested_edits_review_groupsundsuggested_edits_suggest_groupshinzu; diese Einstellung ist eigentlich nicht für die Verwendung mit diesen Pseudogruppen gedacht.
- Resenha
- Entferne den
untargetable_group_ids-Workaround inpublic_room_message_bus_targets, da dies in FIX: Handle new pseudogroups in message bus group IDs (#42610) · discourse/discourse@699ad46 · GitHub behoben wurde. - Ändere den Standardwert von
resenha_allowed_groupsvon0auf4|5.
- Entferne den
Themes
Komponenten
Niedrigprioritäre Probleme
- Core
is_in_edit_topic_groupsinTopicGuardiansollte die_map-Erweiterung für die Site-Einstellung verwenden.Roleable#whisperer?sollteuser.in_any_groups?verwenden und die Admin-Prüfung entfernen; füge1alsmandatory_valueszur Einstellungwhispers_allowed_groupshinzu.- Füge
0|4zudisallowed_groupsfür die Site-Einstellungallow_solved_in_groupshinzu; dies betrifft nur PMs (Private Messages). - Füge
0|4|5zudisallowed_groupsfürabout_page_extra_groupshinzu; dies soll nur mit konkreten Gruppen auf der About-Seite umgehen. - Hinweis in
can_view?fürPresenceChannel: Wir müssen dieGroup::AUTO_GROUPS[:everyone]-Prüfung entfernen, wenn diese anstehende Änderung aufPermanentwechselt.
Core-Plugins
- Chat
- Hinweis für
everyone_allowedan verschiedenen Stellen in der Chat-Auto-Join/Auto-Leave-Logik undusers_with_unreads: Entferne die:everyone-Prüfung, wenn diese anstehende Änderung aufPermanentwechselt. - Aktualisiere
chat_allowed_group_idsinChat::Publisher, um die spezielle Pseudogruppe zu entfernen, da MessageBus diese Pseudogruppen nun korrekt verarbeiten kann (siehe FIX: Handle new pseudogroups in message bus group IDs - Pull Request #42610 - discourse/discourse - GitHub).
- Hinweis für
- Assign
- Entferne
add_model_callback(Group)in plugin.rb; es ist irrelevanter/veralteter Code, der Gruppen-Namen statt IDs betrachtet.
- Entferne
Andere Plugins
- Code Review
- Die Prüfung
can_review_code?aufcode_review_allowed_groupsverwendet die_map-Erweiterung nicht und verwendet auchuser.in_any_groups?nicht. Füge1zumandatory_groupsfür die Einstellung hinzu und entferne die spezielle Admin-Prüfung im Guardian. Füge0|4|5zudisallowed_groupshinzu.
- Die Prüfung
- Needs Love
- Die Prüfung
can_needs_love?aufneeds_love_allowed_groupsverwendet die_map-Erweiterung nicht und verwendet auchuser.in_any_groups?nicht. Füge1zumandatory_groupsfür die Einstellung hinzu und entferne die spezielle Admin-Prüfung im Guardian. Füge0|4|5zudisallowed_groupshinzu.
- Die Prüfung
- Staff Alias
- Die Prüfung
can_post_as_staff_aliasaufstaff_alias_allowed_groupsverwendet die_map-Erweiterung nicht und verwendet auchuser.in_any_groups?nicht. Füge0|4|5zudisallowed_groupshinzu.
- Die Prüfung
Themes
Komponenten
Nächste Schritte für die Migration
TBA