# granular\_anonymous\_and\_logged\_in\_groups\_permissions の安定化から恒久化への道

**URL:** https://meta.discourse.org/t/the-road-to-stable-then-permanent-for-granular-anonymous-and-logged-in-groups-permissions/410178
**Category:** Development
**Tags:** upcoming-changes
**Created:** [2026 年 8 月 17 日午前 5:43 UTC](https://meta.discourse.org/t/the-road-to-stable-then-permanent-for-granular-anonymous-and-logged-in-groups-permissions/410178 "2026-08-17T05:43:36Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![martin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/martin/32/491371_2.png) [@martin](https://meta.discourse.org/u/martin)
#### Post date: [2026 年 8 月 17 日午前 5:43 UTC](https://meta.discourse.org/t/the-road-to-stable-then-permanent-for-granular-anonymous-and-logged-in-groups-permissions/410178/1 "2026-08-17T05:43:36Z")

</div>

これは [Granular group-based permissions for anonymous and logged in users](https://meta.discourse.org/t/granular-group-based-permissions-for-anonymous-and-logged-in-users/402273) の関連トピックであり、現在作成中です（WIP）。

* * *

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

参考までに、いくつかの自動グループ ID は以下の通りです：

- `0` - `everyone`
- `1` - `admins`
- `2` - `moderators`
- `3` - `staff`
- `4` - `anonymous_users`
- `5` - `logged_in_users`

このトピックは、安定版への移行に伴い、このシステムの修正状況を把握するための中央集約的な場所として機能します。Discourse 顧客向けのカスタムプラグインやテーマはここでは追跡せず、そのための内部リストを別途用意しています。

### 優先度が高い問題

Moin が提起した問題：

> [@martin](#):
>
> 1. `anonymous_users` と `logged_in_users` はグループピッカーにまったく表示されていません。ここではこれらを使用可能にすることが安全だと考えます。そうすることで、即将到来的変更がオフの場合でも、`everyone` が `disallowed_groups` に追加されているかどうかは問題なくなります。
> 2. 即将到来的変更がオフの場合、`Guardian::AnonymousUser#in_any_groups?` が `anonymous_users` を尊重するように修正します。
> 3. サイト設定で行っているのと同様に、テーマ設定でも `0 (everyone)` → `5 (logged_in_users)` の読み取り時間のエイリアシングを追加します。

- コア
  - 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](https://github.com/discourse/discourse/blob/86552acfbaf816db3b9db5f761f5e9f2bd221c21/frontend/discourse/admin/controllers/edit-category/tabs.js#L382-L388) は表示可能なグループのみを確認していますが、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-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](https://github.com/discourse/discourse/commit/699ad46536f619396e73720c7652dbfc7a1f86c0) で対処済みのため、`public_room_message_bus_targets` 内の `untargetable_group_ids` のワークアラウンドを削除します。
  - `resenha_allowed_groups` のデフォルトを `0` から `4|5` に変更します。

#### テーマ

#### コンポーネント

### 優先度が低い問題

- コア
  - `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](https://github.com/discourse/discourse/pull/42610) にあるように、MessageBus は現在疑似グループを正しく処理できるようになりました。

- Assign
  - plugin.rb の `add_model_callback(Group)` を廃止します。これはグループ名ではなく ID を参照している無関係な/デッドコードです。

#### その他のプラグイン

- 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` を移行します。
