これは Granular group-based permissions for anonymous and logged in users の関連トピックであり、現在作成中です(WIP)。
コア、プラグイン、テーマの各コードベースには、この即将到来的変更を考慮せずに、または 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
user.groupsとeveryoneのチェックを行うクライアントサイドのshowStatusToUserを削除します。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を追加します。この設定はこれらの疑似グループで使用されることを意図していません。
- Resenha
- 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設定に1をmandatory_valuesとして追加します。allow_solved_in_groupsサイト設定のdisallowed_groupsに0|4を追加します。これは PM のみを対象としています。about_page_extra_groupsのdisallowed_groupsに0|4|5を追加します。これは、About ページ上で具体的なグループのみを対象とするべきです。PresenceChannelのcan_view?に、この即将到来的変更がPermanentに移行する際にGroup::AUTO_GROUPS[:everyone]チェックを削除する必要があるという注記を追加します。
コアプラグイン
- Chat
- チャットの自動参加/自動退出ロジックや
users_with_unreadsのさまざまな箇所のeveryone_allowedに、この即将到来的変更がPermanentに移行する際に:everyoneチェックを削除する必要があるという注記を残します。 Chat::Publisherのchat_allowed_group_idsを更新し、特別な疑似グループを削除します。FIX: Handle new pseudogroups in message bus group IDs - Pull Request #42610 - discourse/discourse - GitHub にあるように、MessageBus は現在疑似グループを正しく処理できるようになりました。
- チャットの自動参加/自動退出ロジックや
- 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を移行します。