no_ads_for_groups の非公開グループのメンバーに広告が表示される

Discourse Advertising Plugin (Ads) について、いくつか質問があります。

ログインしているかどうかにかかわらず、すべてのユーザーに広告を表示したいと考えています。ただし、「extra_special_members」グループのメンバーは除外したいです。

adsense through trust level 設定を変更し、TL4 に設定しました(これは、あらゆるトラストレベルのユーザーが広告を表示できることを意味します)。

また、no ads for groups 設定を変更し、「extra_special_members」グループのみを適用しました(これは、このグループのユーザーは広告を表示しないことを意味します)。

私のテストユーザーは TL2 で、「extra_special_members」グループのメンバーですが、テストユーザーはまだ広告を表示されています。

これはバグですか? :thinking:

それとも、adsense through trust level 設定が no ads for groups 設定を上書きしているのでしょうか? :thinking:

設定を編集して明確にしました。誰か再現を試してもらえますか。

問題の原因を見つけました。

私の「extra_special_members」グループの可視性は次のように設定されています。

このグループは誰が閲覧できますか? グループオーナー

このグループのメンバーは誰が閲覧できますか? グループオーナー

これは、このグループのメンバーがお互いを見ることができず、さらに重要なことに、この(機密性の高い)グループの人数が漏洩しないように設定されています。

もし私が以下を行うと:

  1. 「hide-ads-test」という名前のグループを作成する
  2. 可視性を「グループオーナー、メンバー、モデレーター」に設定する
  3. 私のTL2テストユーザーグループ「hide-ads-test」を追加する
  4. 「hide-ads-test」グループを no ads for groups 設定に追加する

すると、私のTL2ユーザーは広告を見ることができなくなります。

グループの可視性を「グループオーナー、メンバー、モデレーター」から「グループオーナー」に変更すると、広告はすぐに再表示されます :pensive:

広告プラグインがグループを認識できないため、広告が表示されるようです :thinking:

「いいね!」 1

このバグかどうか、開発者の方で確認していただけますでしょうか? :thinking:

もしバグでない場合は、プラグインのフォークを作成するために有料のギグを設定します :blush:

はい、これは問題です。

広告プラグインは、サーバーから取得したグループおよび信頼レベル情報に基づいて、広告を表示するかどうかというすべてのロジックを実行します。

グループメンバーシップはユーザーには表示されないため、クライアントは広告を非表示にする必要があることを把握する方法がありません。

このコードは、ロジックがサーバーサイド(おそらく現在のユーザーのフィールドに「このユーザーには広告がある、またはこのユーザーには広告がない」と表示される)に配置されるように書き直す必要があります。これはかなり大きな変更です。なぜなら、現在JavaScriptで実装されているロジックの多くをRubyに移行する必要があるからです。

これには pr-welcome を付けていますが、繰り返しリクエストがいくつかあれば、迅速な対応を検討します。これは複雑な変更です。

「いいね!」 1

@sam 詳細なご説明、大変感謝いたします。ありがとうございます。

イニシアチブの取り組みを考えてみます :blush:

「いいね!」 1