これは Granular group-based permissions for anonymous and logged in users に関連するトピックであり、現在作業中です(WIP)。
コア、プラグイン、テーマの各種コードベースには、この forthcoming な変更を考慮していない、または user.in_any_groups? やこの問題に対処するために使用される各種ガードイアン(Guardian)メソッドを使用せずに、everyone またはグループ ID 0 を直接参照している箇所がまだいくつかあります。
参考までに、いくつかの自動グループ ID を以下に示します。
0-everyone(全員)1-admins(管理者)2-moderators(モデレーター)3-staff(スタッフ)4-anonymous_users(匿名ユーザー)5-logged_in_users(ログイン済みユーザー)
このトピックは、安定版リリースに近づきながら、このシステムの修正を追跡するための中央集約場所として機能します。Discourse ユーザー向けのカスタムプラグインやテーマはここで追跡されません。これらについては内部で別のリストを作成します。
高優先度の課題
Moin によって提起された問題:
- コア
- About -
apply_excluded_groupsは、about_page_hidden_groupsのグループから選択されたモデレーターと管理者を隠すためにのみ使用されます。0|4|5のような擬似グループをここで使用することは意味を成しません。これらはdisallowed_groupsに追加されるべきです。誤解を招くため、設定の説明も更新する必要があります。
- 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に0|4|5をdisallowed_groupsに追加する必要があります。これらはここで意味を成しません。重要なのは具体的なグループのみです。
その他のプラグイン
- 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設定の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?において、forthcoming な変更がPermanentに移行した時点でGroup::AUTO_GROUPS[:everyone]のチェックを削除する必要があることを注記します。
コアプラグイン
- Chat
- チャットの自動参加/自動退出ロジックおよび
users_with_unreadsの様々な箇所のeveryone_allowedについて、forthcoming な変更が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を追加します。