隠しユーザーフィールド

:information_source: 概要 指定されたグループにのみ表示されるカスタムユーザーフィールドを作成します
:hammer_and_wrench: リポジトリ discourse-hidden-user-fields
:question: インストールガイド テーマまたはテーマコンポーネントのインストール方法
:open_book: Discourseテーマ初心者の方へ Discourseテーマの使用に関する初心者ガイド

このテーマコンポーネントをインストール

詳細説明

:warning: これらのフィールドに機密データを入力する場合は注意してください。フィールドはソースコードには含まれていませんが、何らかの問題が発生した場合は表示される可能性があります :warning:

derek_test(左)とanon9(右)の2人のユーザーがいます。IDとCompanyフィールドは両方のプロファイルに入力されていますが、片方しか互いに見ることができません。derek_testはIDを見ることができ、anon9はCompanyを見ることができます。

ユーザープロフィール

ユーザーカード

検索

この場合、anon9(右)は会社を見ることができ、Acmeを検索できます。


設定

CleanShot 2025-11-13 at 16.17.43

  • フィールド名: カスタムユーザーフィールドの名前を入力します(オブジェクトごとに1つ)
  • 許可されるグループ: リストから許可されるグループを選択します

前提条件

これはカスタムユーザーフィールドを活用しています。これらの設定は、フィールドが表示される場所を決定します。

:white_check_mark: フィールドが入力されたらこれらの設定を再確認するか、事前に権限を作成して、これらのフィールドが決して公開されないようにしてください。

「いいね!」 6

ログインしていないユーザーには何が表示されますか?つまり、そのフィールドが管理者のみに表示される場合、ログアウト後もユーザーはそれを見ることができないと予想されますが、正しいですか?


グループ設定にテキストフィールドを選択した理由は何ですか?グループリストではなく?グループを入力する方が、名前を入力する代わりに選択できるため、少し便利です。ただし、IDで機能するため、コードを少し変更する必要があります。それでも、グループの名前を変更しても機能します。

「いいね!」 1

良い指摘です。この点に対応するため、更新しました。ログアウトしたユーザーにはフィールドが表示されないことを確認しました。

正直に言うと、これはClaude Codeで行いましたが、グループリストタイプはオブジェクトエディタでは利用できず、トップレベルの設定としてのみ利用できるとのことでした。

利用可能なフィールドの数が固定されている場合、次のようになります

CleanShot 2025-11-13 at 13.12.21

「いいね!」 1

それは興味深いですね。ドキュメントに基づくと、私もそのようなものがサポートされていると期待していました。

「いいね!」 2

ご指摘ありがとうございます。そのドキュメントに基づいてグループ設定を変更することができました。

上記の内容をその変更を反映するように更新します。

「いいね!」 2

「ええと…オブジェクトエディタの設定で list_type:group を受け入れましたが、エラーを回避できませんでした。

CleanShot 2025-11-13 at 13.52.29

いくつかの異なる変換を試しましたが、うまくいきませんでした。「オブジェクトスキーマの groups タイプは文書化されていますが、UIはフロントエンドで実装されていません。」という結論に至りました。」

「いいね!」 2

私もそのエラーを見ましたが、リセットボタンを使ってオブジェクト設定全体をリセットしたところ、エラーは再発しませんでした:woman_shrugging:

これで全て問題ありません。
Screenshot_20251113_195748_Firefox

既存の設定のセッティングタイプを変更したのが良くなかったのかもしれません。

「いいね!」 2

これは非常に役立つと思います!

「いいね!」 1

こんにちは、@puttyさん

いくつか問題があります。

ユーザーグループに属していないすべてのユーザーからユーザーフィールドを非表示にする必要があります。これは想定されている動作でしょうか?

  1. ユーザー自身がこのグループに属していない場合、そのユーザーは自分のアカウントでもこれらのフィールドを見ることができませんが、これは問題ないでしょうか?
  2. 管理者またはモデレーターでない限り、他のユーザーも引き続きフィールドを見ることができません!
  3. ところで、モデレーターと管理者も、このテーマによって非表示にされたフィールドを見るためには、このグループに属している必要があります。

これについて助けていただけますか?

アレクセイさん、こんにちは。

詳しく説明していただけますか?問題が見当たりません。現在、1と2があります。あなたのリクエストは、モデレーター/管理者からフィールドを非表示にすることも含まれていますか?参考までに、管理者は最初にフィールドを作成する必要があります。

こんにちは、ありがとうございます!

ローカルの最新のGitHubリポジトリと、最新ビルドのホストされたソリューションで再度テストしましたが、影響を受けるのは管理者カテゴリのみで、管理者はそのフィールドを表示する権限を持つグループのメンバーであれば「非表示」フィールドを見ることができます。モデレーターアクセス(以前そう思っていましたが)は機能していないようです。

ケース:

  1. ユーザー2名、管理者とAlex_1
  2. ユーザーグループ L2_verified
  3. ユーザーフィールド - フルネーム(全ユーザー対象、すべてオン、検索可能のみオフ)
  4. 両ユーザーの名前は Alex Admin と Alex
  5. テーマ設定:
    これらのテーマでコンポーネントを含める(Foundation、Horizon)
    フィールド名:フルネーム
    許可されたグループ:L2_verified

結果:

  1. 両者ともL2_verifiedのメンバーではない場合、誰もフルネームフィールドを見ることができません(自分自身のフルネームでさえも見えません)。
  2. 管理者がL2_verifiedのメンバーである場合、Alex_1のフルネーム(および自分自身のフルネーム)を見ることができます。
  3. Alex_1がL2_verifiedのメンバーである場合、自分自身と管理者のフルネームを見ることができません。
  4. 管理者にAlex_1を付与した場合、Alex_1は自分自身と管理者の両方のフルネームを見ることができます。
「いいね!」 1

ええと…大丈夫そうですね?(笑):sweat_smile:

「いいね!」 1

私のAntigravity with Gemini 3 Pro Highが根本原因を特定しました。

特定された根本原因: グループ

L2_verified

は存在し、

Alex_1

はそのメンバーですが、グループの可視性レベルが4(スタッフ/オーナーのみ)に設定されています。

この制限的な設定のため、Discourseはブラウザに

Alex_1

がこのグループのメンバーであることを伝えません(彼がスタッフ/管理者でもある場合を除く)。したがって、テーマコンポーネントはリストをチェックし、

L2_verified

を見つけられず、フィールドを非表示のままにします。

修正方法:

  1. グループL2_verified管理インタラクション に移動します。

  2. このグループを誰が見ることができますか?「メンバー」 または 「全員」 に変更します。

  3. 保存します。

  4. Alex_1
    

    (非管理者)として更新します。これで機能するはずです!

しかし、現時点では回避策ではありません。ほとんどのグループは誰にも非表示になっているためです:(