これは Granular group-based permissions for anonymous and logged in users の補足トピックであり、現在は作業中(WIP)です。
コア、プラグイン、テーマの各コードベースには、この impending な変更を考慮せず、user.in_any_groups? やこれに対応するために使用される各種ガードリアンメソッドを使わずに、直接 everyone またはグループ ID (0) を参照している箇所がまだいくつか残っています。
参考までに、一部の自動グループ ID は以下の通りです:
0-everyone1-admins2-moderators3-staff4-anonymous_users5-logged_in_users
このトピックは、安定版への移行に向けて、このシステムに関する修正を追跡するための中心的な場所として機能します。Discourse 顧客用のカスタムプラグインやテーマはここでは追跡されません。これについては別途内部でリストを管理しています。
高優先度の問題
Moin が提起した問題:
- コア
- About -
apply_excluded_groupsは、about_page_hidden_groups内のグループから選択されたモデレーターと管理者を非表示にするためにのみ使用されます。0|4|5のような擬似グループをここで使用する意味はなく、それらはdisallowed_groupsに追加されるべきです。設定の説明も誤解を招くため、更新が必要です。 - EditCategoryTabsController -
_wouldLoseAccess(discourse/frontend/discourse/admin/controllers/edit-category/tabs.js at 86552acfbaf816db3b9db5f761f5e9f2bd221c21 · discourse/discourse · GitHub) では現在、可視的なグループのみを確認していますが、ACL のevaluateのようにサーバーサイドでのチェックであるべきです。
- About -
コアプラグイン
- Discourse Templates
-
can_use_private_templates?はまだ直接everyoneを参照しており、サイト設定の_mapショートハンドを使用していません。
-
- Discourse AI
-
- ガーディアン拡張子の
can_see_summary?はuser.in_any_groups?を使用していません。
- ガーディアン拡張子の
-
- AiBot::Playground の
can_attach?はuser.in_any_groups?を使用していません。
- AiBot::Playground の
-
ai-translation-topic-adminのaddTopicAdminMenuButtonはクライアント上でcurrentUser.groupsを確認していますが、信頼性が低いです。代わりにサーバーサイドでcontent_localization_allowed_groupsをチェックしてください。
-
- Discourse Assign. ここには多くの問題があります。
AssignmentPermissionsのuser_ids_in_groupsではなく、user_ids_in_groupsを使用すべきです。(注: 原文のまま記載)assign_allowed_on_groupsにはdisallowed_groupsとして0|4|5を追加する必要があります。これらはここでは意味がなく、具体的なグループのみが重要です。
その他のプラグイン
- Activity Pub
showStatusToUserのクライアントサイドでのuser.groupsおよびeveryoneチェックを削除してください。activity_pub_post_status_visibility_groupsのデフォルトを4|5に変更してください。
- Suggested Edits
GuardianExtensionsのuser_in_suggested_edits_group?はuser.in_any_groups?を使用する必要があります。suggested_edits_review_groupsのmandatory_groupsに1を追加し、can_review_suggested_edits_in_topic_list内の管理者の特別ケースを削除してください。suggested_edits_review_groupsとsuggested_edits_suggest_groupsのdisallowed_groupsに0|4|5を追加してください。この設定は本来、これらの擬似グループで使用されることを意図していません。
- Live
- FIX: Handle new pseudogroups in message bus group IDs (#42610) · discourse/discourse@699ad46 · GitHub で対応済みであるため、
public_room_message_bus_targets内のuntargetable_group_idsワークアラウンドを削除してください。 resenha_allowed_groupsのデフォルトを0から4|5に変更してください。
- FIX: Handle new pseudogroups in message bus group IDs (#42610) · discourse/discourse@699ad46 · GitHub で対応済みであるため、
テーマ
コンポーネント
低優先度の問題
- コア
TopicGuardianのis_in_edit_topic_groupsは、サイト設定に対して_map拡張子を使用すべきです。Roleable#whisperer?はuser.in_any_groups?を使用し、管理者チェックを廃止するべきです。また、whispers_allowed_groups設定のmandatory_valuesに1を追加してください。allow_solved_in_groupsサイト設定のdisallowed_groupsに0|4を追加してください。これは PM のみを対象としています。about_page_extra_groupsのdisallowed_groupsに0|4|5を追加してください。これは About ページにおいて具体的なグループのみを対象とするものです。PresenceChannelのcan_view?について、この impending な変更がPermanentに移行する際にGroup::AUTO_GROUPS[:everyone]チェックを削除する必要があるというメモを残してください。
コアプラグイン
- Chat
- チャットの自動参加/自動離脱ロジックおよび
users_with_unreadsにおけるeveryone_allowedの様々な場所で、この impending な変更がPermanentに移行する際に:everyoneチェックを削除するというメモを残してください。 - FIX: Handle new pseudogroups in message bus group IDs - Pull Request #42610 - discourse/discourse - GitHub で MessageBus が擬似グループを正しく処理できるようになったため、
Chat::Publisherのchat_allowed_group_idsを更新して特別な擬似グループを削除してください。
- チャットの自動参加/自動離脱ロジックおよび
- Assign
- plugin.rb 内の
add_model_callback(Group)を削除してください。ID ではなくグループ名を見ており、無関係/不要なコードです。
- plugin.rb 内の
その他のプラグイン
- Code Review
code_review_allowed_groupsに対するcan_review_code?チェックは_map拡張子を使用しておらず、user.in_any_groups?も使用していません。設定のmandatory_groupsに1を追加し、ガーディアン内の管理者の特別チェックを廃止してください。disallowed_groupsに0|4|5を追加してください。
- Needs Love
needs_love_allowed_groupsに対するcan_needs_love?チェックは_map拡張子を使用しておらず、user.in_any_groups?も使用していません。設定のmandatory_groupsに1を追加し、ガーディアン内の管理者の特別チェックを廃止してください。disallowed_groupsに0|4|5を追加してください。
- Staff Alias
staff_alias_allowed_groupsに対するcan_post_as_staff_aliasチェックは_map拡張子を使用しておらず、user.in_any_groups?も使用していません。disallowed_groupsに0|4|5を追加してください。
テーマ
コンポーネント
マイグレーションのための次のステップ
-
AiAgentモデルのallowed_group_idsをマイグレート