自動グループの可視性はどのように機能しますか?

自動グループの表示設定がどのように機能するか、少し混乱しています。現時点では /groups ディレクトリについてのみ話しています。

2.7.0.beta4 の比較的新しいインストール環境で確認した現象は以下の通りです。

  • 管理者またはモデレーター権限を持つユーザーが /groups を閲覧すると、8 つのすべての自動グループ(adminsmoderatorsstafftrust_level_[0-4])が表示されます。
  • 管理者でもモデレーターでもないユーザー(信頼レベルに関わらず)が /groups を閲覧すると、moderators グループのみが表示されます。

しかし、これらのグループはすべて同じデフォルトの「表示設定」を持っています。

  • このグループを表示できるのは誰ですか?ログインユーザー
  • このグループのメンバーを表示できるのは誰ですか?全員

これは意図した動作でしょうか?それとも、これらのグループの表示パラメータの処理に問題があるのでしょうか?

「いいね!」 5

コードには「ページの見栄えをすっきりさせるため、自動生成グループをスタッフ以外の全員から非表示にする」という説明のコメントがあります。これはここで実装されています:discourse/app/controllers/groups_controller.rb at main · discourse/discourse · GitHub

このコードは、非スタッフユーザーがグループページを表示する際に、自動生成グループの可視性設定を上書きしています。表示されるのは「モデレーター」グループのみです。

この問題とは直接関係ありませんが、上記で投稿した GitHub リンクをワンボックス化しようとしたところ、プレビューではコードがフォーマットなしで表示されました:

「いいね!」 3

なるほど、それは説明になります。そして、そのコードは最善の意図で書かれたと確信していますが、それは壊れています。なぜなら:

  1. モデレーター以外の自動グループを表示したい場合があるかもしれません。
  2. 自動グループの管理インターフェースでは、モデレーター以外の自動グループの表示を設定できますが、その設定は無視されます。

そのコードブロック(そして過去6年間生き残ったかわいいタイプミス)を削除するのはかなり簡単でしょう。

もし必要だと考えるなら、トリッキーなのは、現在の自動グループの表示設定を「グループオーナー」に変更することです。これにより、それらが非表示に強制されていることに慣れているすべてのインストールで、これらのグループが誤って表示されるのを防ぐことができます。Discourseには、アップグレード中にそのような変更を行うためのメカニズムがあるかどうかはわかりませんが、スキーマ変更中に必要な種類のものですので、何かあるはずです。

また、「グループカタログで自動グループを非表示にする」という動作は、「visibility_level」の他の側面を不明瞭にするため、悪いことです。例えば、

  • 管理者Xが可視性設定を試してみて、スタッフ以外のユーザーは、設定に関係なく「trust_level_0」をグループカタログで見ることができないことに気づきます。
  • そのため、管理者Xは「visibility_level」と「member_visibility_level」を「Everyone」のままにしておきます。これらの設定は効果がないように見えるためです。
  • 匿名ユーザーZが「/groups/trust_level_0」にアクセスし、サイト上の全ユーザーのリストを取得します。

管理者Xは気にするかもしれませんが、しなくても、それが可能であったことに驚くでしょう。

以前は知らなかった無関係な豆知識

meta.discourseユーザーの信頼レベル別分布:

レベル ユーザー数
TL0 45,942
TL1 29,226
TL2 3,620
TL3 124
TL4 102

こんにちは、mdoggydogさん :slight_smile:

いくつか有効な点があると思います。例えば:

これは紛らわしいですね。

提案については、Feature トピックを作成していただけますでしょうか :slight_smile:

完了しました!

「いいね!」 2

会話は以下で継続されています: Respect the visibility settings of all automatic groups