特定のグループのメンバーにヘッダーでカスタムHTMLを表示

こんにちは。

似たようなものを探していましたが、特定のグループを除外したいと考えていました。そこでChatGPTを試してみたところ、次のような回答がありました。

Discourseで特定のグループを除外するスクリプトをトリガーするHTMLテーマを作成するには、Discourseのテーマカスタマイズオプションと、グループ除外を処理するJavaScriptを使用する必要があります。Discourseは、ユーザーのグループを含むユーザーの詳細を取得するために api.getCurrentUser() を提供しており、これは条件付きでスクリプトをトリガーするのに役立ちます。

以下は、テーマまたはコンポーネントの < /head > セクションでこれを実装する方法の例です。

<script type="text/discourse-plugin" version="0.8">
    api.onPageChange(() => {
        // 現在のユーザーの詳細を取得
        const currentUser = api.getCurrentUser();

        if (currentUser) {
            // スクリプトの実行を除外したいグループ名のリスト
            const excludedGroups = ['group1', 'group2'];

            // ユーザーのグループを取得
            const userGroups = currentUser.groups.map(group => group.name);

            // ユーザーがいずれかの除外グループに属しているか確認
            const isExcluded = excludedGroups.some(group => userGroups.includes(group));

            if (!isExcluded) {
                // ここにカスタムスクリプトロジックを記述
                console.log('Script is executed for this user.');
                // 例: 除外されていないユーザー向けのカスタムロジックをトリガー
                // customScriptFunction();
            } else {
                console.log('User is in an excluded group, script not executed.');
            }
        }
    });
</script>

説明:

  1. api.onPageChange(): ページが変更されるたびにスクリプトを実行します。
  2. api.getCurrentUser(): 現在ログインしているユーザーの詳細を取得します。
  3. excludedGroups: 除外したいグループをリストアップします。
  4. userGroups.includes(group): ユーザーがいずれかの除外グループに属しているかどうかを確認します。
  5. 条件付きスクリプト実行: スクリプトは、ユーザーがいずれかの除外グループに属していない場合にのみ実行されます。

customScriptFunction(); を実行したいスクリプトに置き換えることができます。さらに調整が必要な場合はお知らせください!

私の頭はこれで完全に吹き飛びました :exploding_head:。まだ試していませんが、ChatGPTのコードは正しいのでしょうか?