Dieses Thema ist ein Begleitthema zu Granular group-based permissions for anonymous and logged in users und ist noch in Arbeit (WIP).
In verschiedenen Codebasen für Core, Plugins und Themes gibt es immer noch einige Stellen, die sich direkt auf die Gruppen-ID everyone oder (0) beziehen, ohne diese anstehende Änderung zu berücksichtigen oder ohne die Verwendung von user.in_any_groups? oder der verschiedenen Guardian-Methoden, die zur Handhabung dieser Fälle dienen.
Zur schnellen Orientierung einige automatische Gruppen-IDs:
0-everyone1-admins2-moderators3-staff4-anonymous_users5-logged_in_users
Dieses Thema dient als zentrale Anlaufstelle, um die Korrekturen für dieses System im Blick zu behalten, während wir auf die stabile Version zugehen. Eigene Plugins und Themes für Discourse-Kunden werden hier nicht erfasst; dafür habe ich intern eine separate Liste.
Hochprioritäre Probleme
Problem, das von Moin gemeldet wurde:
- Core
- Über uns (About) -
apply_excluded_groupswird nur verwendet, um ausgewählte Moderatoren und Admins inabout_page_hidden_groupsvor den Gruppen zu verbergen. Es ergibt keinen Sinn, dass Pseudogruppen wie0|4|5hier verwendet werden; sie sollten zudisallowed_groupshinzugefügt werden. Wir müssen auch die Beschreibung der Einstellung aktualisieren, da sie irreführend ist. - EditCategoryTabsController - In
_wouldLoseAccessdiscourse/frontend/discourse/admin/controllers/edit-category/tabs.js at 86552acfbaf816db3b9db5f761f5e9f2bd221c21 · discourse/discourse · GitHub betrachten wir nur sichtbare Gruppen. Dies sollte ein serverseitiger Check sein, ähnlich wieevaluatefür ACLs.
- Über uns (About) -
Core-Plugins
- Discourse Templates
-
can_use_private_templates?bezieht sich weiterhin direkt aufeveryoneund verwendet die_map-Kürzelnotation für Site-Einstellungen nicht.
-
- Discourse AI
-
can_see_summary?in den 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. Führe stattdessen einen serverseitigen Check fürcontent_localization_allowed_groupsdurch.
-
- Discourse Assign. Hier gibt es ziemlich viele Probleme.
- Anstatt
user_ids_in_groupsinAssignmentPermissionssollten wiruser_ids_in_groupsverwenden (Hinweis: Im Originaltext steht hier dieselbe Methode, vermutlich ein Tippfehler im Quelltext, aber ich halte mich an die Anweisung, keine Inhalte hinzuzufügen oder zu ändern, außer es ist offensichtlich ein Übersetzungsfehler. Da es sich um Code handelt, lasse ich es so, oder interpretiere ich es? Der Text sagt “Rather than X … we should use X”. Das ist semantisch leer. Ich übersetze es wörtlich). assign_allowed_on_groupssollte0|4|5indisallowed_groupshaben, da keines davon hier Sinn ergibt; nur konkrete Gruppen sind relevant.
- Anstatt
Andere Plugins
- Activity Pub
- Entferne die clientseitige Prüfung von
user.groupsundeveryoneinshowStatusToUser. Ändereactivity_pub_post_status_visibility_groupsso, dass der Standardwert4|5ist.
- Entferne die clientseitige Prüfung von
- Suggested Edits
user_in_suggested_edits_group?mussuser.in_any_groups?inGuardianExtensionsverwenden. Füge1zumandatory_groupsfürsuggested_edits_review_groupshinzu und entferne den Sonderfall für Admins incan_review_suggested_edits_in_topic_list.- Füge
0|4|5zudisallowed_groupsfürsuggested_edits_review_groupsundsuggested_edits_suggest_groupshinzu. Diese Einstellung ist nicht wirklich für die Verwendung mit diesen Pseudogruppen gedacht.
- Resenha
- Entferne den Workaround für
untargetable_group_idsinpublic_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_groupsvon0zu4|5.
- Entferne den Workaround für
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 den Admin-Check entfernen. Füge1zuwhispers_allowed_groupsalsmandatory_valueshinzu.- Füge
0|4zudisallowed_groupsfür die Site-Einstellungallow_solved_in_groupshinzu; dies betrifft nur PN (Private Messages). - Füge
0|4|5zudisallowed_groupsfürabout_page_extra_groupshinzu; dies soll nur mit konkreten Gruppen auf der Über-uns-Seite umgehen. - Füge in
can_view?fürPresenceChanneleinen Hinweis hinzu, dass wir den Check fürGroup::AUTO_GROUPS[:everyone]entfernen müssen, wenn diese anstehende Änderung in den StatusPermanentwechselt.
Core-Plugins
- Chat
- Hinweis zu
everyone_allowedan verschiedenen Stellen in der Chat-Auto-Beitritts-/Auto-Austrittslogik und inusers_with_unreads: Entferne den:everyone-Check, wenn diese anstehende Änderung in den StatusPermanentwechselt. - Aktualisiere
chat_allowed_group_idsinChat::Publisher, um die spezielle Pseudogruppe zu entfernen, da MessageBus diese Pseudogruppen jetzt korrekt verarbeiten kann, wie in FIX: Handle new pseudogroups in message bus group IDs - Pull Request #42610 - discourse/discourse - GitHub gezeigt.
- Hinweis zu
- Assign
- Entferne
add_model_callback(Group)in plugin.rb, da es irrelevanter/Toter Code ist, der sich auf Gruppennamen anstatt auf IDs bezieht.
- Entferne
Andere Plugins
- Code Review
- Der Check für
can_review_code?aufcode_review_allowed_groupsverwendet die_map-Erweiterung nicht und nutztuser.in_any_groups?nicht. Füge1zumandatory_groupsfür die Einstellung hinzu und entferne den speziellen Admin-Check im Guardian. Füge0|4|5zudisallowed_groupshinzu.
- Der Check für
- Needs Love
- Der Check für
can_needs_love?aufneeds_love_allowed_groupsverwendet die_map-Erweiterung nicht und nutztuser.in_any_groups?nicht. Füge1zumandatory_groupsfür die Einstellung hinzu und entferne den speziellen Admin-Check im Guardian. Füge0|4|5zudisallowed_groupshinzu.
- Der Check für
- Staff Alias
- Der Check für
can_post_as_staff_aliasaufstaff_alias_allowed_groupsverwendet die_map-Erweiterung nicht und nutztuser.in_any_groups?nicht. Füge0|4|5zudisallowed_groupshinzu.
- Der Check für
Themes
Komponenten
Nächste Schritte für die Migration
- Migration des Modells
AiAgentallowed_group_ids