これは Granular group-based permissions for anonymous and logged in users の関連トピックであり、現在作成中です(WIP)。
コア、プラグイン、テーマの各コードベースには、この即将到来的変更を考慮せずに、または user.in_any_groups? やこれに対応するために使用される各種ガーディアンメソッドを使わずに、直接 everyone または(0)グループIDを参照している箇所がまだいくつかあります。
参考までに、一部の自動グループ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には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を追加してください。これはアバウトページで具体的なグループのみを扱うことを意図しているためです。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を追加してください。
テーマ
コンポーネント
移行に向けた次のステップ
TBA(後日記載)