granular_anonymous_and_logged_in_groups_permissions の安定化から恒久化への道

これは Granular group-based permissions for anonymous and logged in users の関連トピックであり、現在作成中です(WIP)。


コア、プラグイン、テーマの各コードベースには、この即将到来的変更を考慮せずに、または user.in_any_groups? やこれに対応するために使用される各種ガーディアンメソッドを使わずに、直接 everyone または(0)グループIDを参照している箇所がまだいくつかあります。

参考までに、一部の自動グループ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 に追加されるべきです。設定の説明も誤解を招くため、更新する必要があります。
    • EditCategoryTabsController - _wouldLoseAccess において discourse/frontend/discourse/admin/controllers/edit-category/tabs.js at 86552acfbaf816db3b9db5f761f5e9f2bd221c21 · discourse/discourse · GitHub は表示可能なグループのみを確認していますが、ACLの evaluate のようにサーバーサイドでのチェックであるべきです

コアプラグイン

  • 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? を使用していません
      • ai-translation-topic-adminaddTopicAdminMenuButton はクライアントで currentUser.groups を参照していますが、これは信頼できません。代わりに content_localization_allowed_groups についてサーバーサイドでのチェックを実行してください
  • Discourse Assign。ここでは多くの問題があります。
    • AssignmentPermissionsuser_ids_in_groups ではなく、user_ids_in_groups を使用するべきです
    • assign_allowed_on_groups には 0|4|5disallowed_groups に追加すべきです。これらはここでは意味がなく、具体的なグループのみが重要だからです。

その他のプラグイン

  • Activity Pub
    • user.groupseveryone チェックのクライアントサイドでの showStatusToUser チェックを削除してください。activity_pub_post_status_visibility_groups のデフォルトを 4|5 に変更してください。
  • Suggested Edits
    • GuardianExtensionsuser_in_suggested_edits_group?user.in_any_groups? を使用する必要があります。suggested_edits_review_groupsmandatory_groups1 を追加し、can_review_suggested_edits_in_topic_list 内の管理者の特殊ケースを削除してください。
    • suggested_edits_review_groupssuggested_edits_suggest_groupsdisallowed_groups0|4|5 を追加してください。この設定はこれらの擬似グループとの使用を意図していないためです。
  • Resenha

テーマ

コンポーネント

優先度の低い問題

  • コア
    • TopicGuardianis_in_edit_topic_groups は、サイト設定の _map 拡張機能を使用すべきです。
    • Roleable#whisperer?user.in_any_groups? を使用し、管理者チェックを削除すべきです。whispers_allowed_groups 設定の mandatory_values1 を追加してください。
    • allow_solved_in_groups サイト設定の disallowed_groups0|4 を追加してください。これはPM(プライベートメッセージ)のみを扱うためです。
    • about_page_extra_groupsdisallowed_groups0|4|5 を追加してください。これはアバウトページで具体的なグループのみを扱うことを意図しているためです。
    • PresenceChannelcan_view? に、この即将到来的変更が Permanent に移行する際に Group::AUTO_GROUPS[:everyone] チェックを削除する必要があることを注記してください。

コアプラグイン

  • Chat
    • チャットの自動参加/自動離脱ロジックや users_with_unreads のさまざまな箇所の everyone_allowed に、この即将到来的変更が Permanent に移行する際に :everyone チェックを削除するよう注記してください。
    • Chat::Publisherchat_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ではなくグループ名を見ており、無関係/デッドコードです。

その他のプラグイン

  • Code Review
    • code_review_allowed_groups に対する can_review_code? チェックは _map 拡張機能を使っておらず、user.in_any_groups? も使用していません。設定の mandatory_groups1 を追加し、ガーディアン内の管理者の特殊チェックを削除してください。disallowed_groups0|4|5 を追加してください。
  • Needs Love
    • needs_love_allowed_groups に対する can_needs_love? チェックは _map 拡張機能を使っておらず、user.in_any_groups? も使用していません。設定の mandatory_groups1 を追加し、ガーディアン内の管理者の特殊チェックを削除してください。disallowed_groups0|4|5 を追加してください。
  • Staff Alias
    • staff_alias_allowed_groups に対する can_post_as_staff_alias チェックは _map 拡張機能を使っておらず、user.in_any_groups? も使用していません。disallowed_groups0|4|5 を追加してください。

テーマ

コンポーネント

移行に向けた次のステップ

TBA(後日記載)

「いいね!」 2