Dies 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 noch einige Stellen, die sich direkt auf die everyone- oder (0) Gruppen-ID beziehen, ohne diese anstehende Änderung zu berücksichtigen oder ohne die Verwendung von user.in_any_groups? oder der verschiedenen Guardian-Methoden, die zur Behandlung dieses Themas 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 zusteueren. Eigene Plugins und Themes für Discourse-Kunden werden hier nicht erfasst; ich habe intern eine separate Liste dafür.
Hochprioritäre Probleme
Problem, das von Moin angesprochen wurde:
- Core
- Über uns -
apply_excluded_groupswird nur verwendet, um ausgewählte Moderatoren und Admins inabout_page_hidden_groupsvor den Gruppen zu 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
_wouldLoseAccesshttps://github.com/discourse/discourse/blob/86552acfbaf816db3b9db5f761f5e9f2bd221c21/frontend/discourse/admin/controllers/edit-category/tabs.js#L382-L388 betrachten wir nur sichtbare Gruppen; dies sollte ein serverseitiger Check sein, ähnlich wieevaluatefür ACLs.
- Über uns -
Core-Plugins
- Discourse Templates
-
can_use_private_templates?verweist weiterhin direkt aufeveryoneund verwendet die_map-Kurzschreibweise 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-adminschaut sichcurrentUser.groupsauf der Client-Seite an, 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. assign_allowed_on_groupssollte0|4|5zudisallowed_groupshinzufügen; keine dieser Gruppen macht hier Sinn, es kommen nur konkrete Gruppen infrage.
- Anstatt
Andere Plugins
- Activity Pub
- Clientseitige Prüfung von
user.groupsundeveryoneinshowStatusToUserentfernen.activity_pub_post_status_visibility_groupsauf Standardwert4|5ändern.
- Clientseitige Prüfung von
- Suggested Edits
user_in_suggested_edits_group?mussuser.in_any_groups?inGuardianExtensionsverwenden.1zumandatory_groupsfürsuggested_edits_review_groupshinzufügen und den Admin-Sonderfall incan_review_suggested_edits_in_topic_listentfernen.0|4|5zudisallowed_groupsfürsuggested_edits_review_groupsundsuggested_edits_suggest_groupshinzufügen; diese Einstellung ist nicht wirklich für die Verwendung mit diesen Pseudogruppen gedacht.
- Resenha
- Den Workaround
untargetable_group_idsinpublic_room_message_bus_targetsentfernen, da dies in FIX: Handle new pseudogroups in message bus group IDs (#42610) · discourse/discourse@699ad46 · GitHub behandelt wurde. - Standardwert für
resenha_allowed_groupsvon0auf4|5ändern.
- 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 den Admin-Check entfernen;1zur Einstellungwhispers_allowed_groupsalsmandatory_valueshinzufügen.0|4zudisallowed_groupsfür die Site-Einstellungallow_solved_in_groupshinzufügen; dies betrifft nur PN (Private Messages).0|4|5zudisallowed_groupsfürabout_page_extra_groupshinzufügen; dies soll nur mit konkreten Gruppen auf der Über-uns-Seite umgehen.- Hinweis in
can_view?fürPresenceChannel, dass wir denGroup::AUTO_GROUPS[:everyone]-Check entfernen müssen, wenn diese anstehende Änderung zuPermanentwechselt.
Core-Plugins
- Chat
- Hinweis für
everyone_allowedan verschiedenen Stellen in der Chat-Auto-Beitritt/Auto-Austritts-Logik undusers_with_unreads, den:everyone-Check zu entfernen, wenn diese anstehende Änderung zuPermanentwechselt. chat_allowed_group_idsinChat::Publisheraktualisieren, um die spezielle Pseudogruppe zu entfernen, da MessageBus laut FIX: Handle new pseudogroups in message bus group IDs - Pull Request #42610 - discourse/discourse - GitHub jetzt korrekt mit Pseudogruppen umgehen kann.
- Hinweis für
- Assign
add_model_callback(Group)in plugin.rb entfernen; es ist irrelevanter/toter Code, der sich auf Gruppennamen anstatt auf IDs bezieht.
Andere Plugins
- Code Review
can_review_code?-Check fürcode_review_allowed_groupsverwendet die_map-Erweiterung nicht und verwendetuser.in_any_groups?nicht.1zumandatory_groupsfür die Einstellung hinzufügen und den speziellen Admin-Check im Guardian entfernen.0|4|5zudisallowed_groupshinzufügen.
- Needs Love
can_needs_love?-Check fürneeds_love_allowed_groupsverwendet die_map-Erweiterung nicht und verwendetuser.in_any_groups?nicht.1zumandatory_groupsfür die Einstellung hinzufügen und den speziellen Admin-Check im Guardian entfernen.0|4|5zudisallowed_groupshinzufügen.
- Staff Alias
can_post_as_staff_alias-Check fürstaff_alias_allowed_groupsverwendet die_map-Erweiterung nicht und verwendetuser.in_any_groups?nicht.0|4|5zudisallowed_groupshinzufügen.
Themes
Komponenten
Nächste Schritte für die Migration
TBA (Noch nicht bekannt)