Dieses Thema ist ein Begleitthema zu Granular group-based permissions for anonymous and logged in users und befindet sich noch in Arbeit.
In verschiedenen Codebasen für Core, Plugins und Themes gibt es noch einige Stellen, die sich direkt auf die everyone- oder (0) Gruppen-ID beziehen, ohne diese anstehende Änderung zu berücksichtigen oder ohne user.in_any_groups? oder die verschiedenen Guardian-Methoden zu verwenden, die zur Handhabung dieses Themas dienen.
Zur schnellen Orientierung einige Auto-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 Hinblick auf die stabile Version im Blick zu behalten. Custom-Plugins und Themes für Discourse-Kunden werden hier nicht erfasst; ich habe dafür intern eine separate Liste.
Hochprioritäre Probleme
Problem, das von Moin angesprochen wurde:
- Core
- About -
apply_excluded_groupswird nur verwendet, um ausgewählte Moderatoren und Admins in den Gruppen ausabout_page_hidden_groupszu verbergen. 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. - 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.
- About -
Core-Plugins
- Discourse Templates
-
can_use_private_templates?bezieht sich weiterhin direkt aufeveryoneund verwendet die_map-Kurzschreibweise 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 eine serverseitige Prüfung fürcontent_localization_allowed_groupsdurch.
-
- Discourse Assign. Hier gibt es ziemlich viele Probleme.
- Anstatt
user_ids_in_groupsinAssignmentPermissionssollten wiruser_ids_in_groupsverwenden. assign_allowed_on_groupssollte0|4|5indisallowed_groupshaben, da hier nur konkrete Gruppen relevant sind.
- 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_groupsinsuggested_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, da diese Einstellung nicht wirklich für diese Pseudogruppen gedacht ist.
- Resenha
- 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 behandelt wurde. - Ändere den Standardwert von
resenha_allowed_groupsvon0zu4|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. - Füge
0|4|5zudisallowed_groupsfürabout_page_extra_groupshinzu; dies soll nur mit konkreten Gruppen auf der About-Seite umgehen. - Füge einen Hinweis in
can_view?fürPresenceChannelein, dass wir die PrüfungGroup::AUTO_GROUPS[:everyone]entfernen müssen, wenn diese anstehende Änderung in den StatusPermanentübergeht.
Core-Plugins
- Chat
- Füge einen Hinweis für
everyone_allowedan verschiedenen Stellen in der Auto-Beitritts-/Auto-Austrittslogik von Chat undusers_with_unreadsein, um die:everyone-Prüfung zu entfernen, wenn diese anstehende Änderung in den StatusPermanentübergeht. - 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.
- Füge einen Hinweis für
- Assign
- Entferne
add_model_callback(Group)in plugin.rb, da dies irrelevant ist / toter Code, der sich auf Gruppennamen statt auf IDs bezieht.
- Entferne
Andere Plugins
- Code Review
- Die Prüfung
can_review_code?fürcode_review_allowed_groupsverwendet die_map-Erweiterung nicht und verwendetuser.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?fürneeds_love_allowed_groupsverwendet die_map-Erweiterung nicht und verwendetuser.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_aliasfürstaff_alias_allowed_groupsverwendet die_map-Erweiterung nicht und verwendetuser.in_any_groups?nicht. Füge0|4|5zudisallowed_groupshinzu.
- Die Prüfung
Themes
Komponenten
Nächste Schritte für die Migration
TBA