Dies ist ein Begleitthema zu Granular group-based permissions for anonymous and logged in users und befindet sich noch in Arbeit (WIP).
Es gibt weiterhin einige Stellen in verschiedenen Codebasen für Core, Plugins und Themes, die direkt auf everyone oder die Gruppen-ID (0) verweisen, ohne diese bevorstehende Änderung zu berücksichtigen oder ohne user.in_any_groups? bzw. verschiedene Guardian-Methoden zu verwenden, die dafür vorgesehen sind.
Zur schnellen Referenz einige automatische Gruppen-IDs:
0-everyone1-admins2-moderators3-staff4-anonymous_users5-logged_in_users
Dieses Thema dient als zentrale Anlaufstelle, um die Fixes für dieses System im Blick zu behalten, während wir uns der stabilen Version nähern. Eigene Plugins und Themes für Discourse-Kunden werden hier nicht erfasst; ich habe dafür intern eine separate Liste.
Hochprioritäre Probleme
Von Moin gemeldetes Problem:
- Core
- Über uns –
apply_excluded_groupswird nur verwendet, um ausgewählte Moderatoren & Admins aus den Gruppen inabout_page_hidden_groupsauszublenden. Es ergibt 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. - EditCategoryTabsController – In
_wouldLoseAccessdiscourse/frontend/discourse/admin/controllers/edit-category/tabs.js at 86552acfbaf816db3b9db5f761f5e9f2bd221c21 · discourse/discourse · GitHub betrachten wir nur sichtbare Gruppen. Dies sollte eine serverseitige Prüfung sein, ähnlich wieevaluatefür ACLs.
- Über uns –
Core-Plugins
- Discourse Templates
-
can_use_private_templates?verweist immer noch direkt aufeveryoneund verwendet die_map-Kurzschreibweise bei 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-adminprüftcurrentUser.groupsclientseitig, was nicht zuverlässig ist. Führe stattdessen eine serverseitige Prüfung fürcontent_localization_allowed_groupsdurch.
-
- Discourse Assign. Hier gibt es ziemlich viele Probleme.
- Statt
user_ids_in_groupsinAssignmentPermissionssollten wiruser_ids_in_groupsverwenden (Hinweis: Im Originaltext identisch, vermutlich ein Tippfehler im Quelltext, aber ich bleibe beim Wortlaut, es sei denn, der Kontext deutet stark auf eine andere Methode hin. Da beide Begriffe identisch sind, übersetze ich wörtlich). - Zu
assign_allowed_on_groupssollten0|4|5zudisallowed_groupshinzugefügt werden, da keines davon hier sinnvoll ist; nur konkrete Gruppen sind relevant.
- Statt
Andere Plugins
- Activity Pub
- Entferne die clientseitige Prüfung von
user.groupsund demeveryone-Check inshowStatusToUser. Ändereactivity_pub_post_status_visibility_groupsso, dass standardmäßig4|5gesetzt ist.
- 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 soll eigentlich nicht mit diesen Pseudogruppen verwendet werden.
- Live
- Entferne den Workaround
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_groupsvon0auf4|5.
- Entferne den Workaround
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üge1zur Einstellungwhispers_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. - Notiz in
can_view?fürPresenceChannel: Wir müssen die Prüfung aufGroup::AUTO_GROUPS[:everyone]entfernen, wenn diese bevorstehende Änderung in den StatusPermanentwechselt.
Core-Plugins
- Chat
- Notiz zu
everyone_allowedan verschiedenen Stellen in der Logik für automatischen Beitritt/Automatisches Verlassen im Chat sowie inusers_with_unreads: Die:everyone-Prüfung muss entfernt werden, wenn diese bevorstehende Änderung in den StatusPermanentwechselt. - Aktualisiere
chat_allowed_group_idsinChat::Publisher, um die spezielle Pseudogruppe zu entfernen, da MessageBus gemäß FIX: Handle new pseudogroups in message bus group IDs - Pull Request #42610 - discourse/discourse - GitHub nun korrekt mit Pseudogruppen umgehen kann.
- Notiz zu
- Assign
- Entferne
add_model_callback(Group)in plugin.rb. Das ist irrelevanter/Toter Code, der nach Gruppennamen statt IDs sucht.
- Entferne
Andere Plugins
- Code Review
- Die Prüfung
can_review_code?aufcode_review_allowed_groupsverwendet die_map-Erweiterung nicht und nutzt 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 nutzt 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 nutzt auchuser.in_any_groups?nicht. Füge0|4|5zudisallowed_groupshinzu.
- Die Prüfung
Themes
Komponenten
Nächste Schritte für die Migration
- Migriere
allowed_group_idsdes ModellsAiAgent