一般ユーザーがスタッフ限定タグを適用可能

昨日サイトを更新したところ、スタッフではないユーザーが投稿に「featured」タグを適用しているのを発見しました。これはスタッフ限定タグとして定義されているため、本来は不可能なはずです。そのユーザーになりすまして確認したところ、投稿時に制限付きタグにアクセスできてしまいました。ここでメタで再現を試みましたが、通常ユーザーにはタグ機能が利用できないのではないかと思っています?

ローカル開発サイトでも同様の問題の再現を試みましたが、現時点では成功していません。貴サイトにおいて、この問題はすべてのカテゴリで発生しているのでしょうか、それとも非スタッフユーザーがスタッフタグを追加できる特定のカテゴリでのみ発生しているのでしょうか?問題の再現方法に関するヒントがあれば、大変助かります。

はい、詳しく調べて状況を把握します。少々お時間をいただくかもしれませんが、改めてご連絡いたします。

TL-0 および TL-1 のユーザーでセーフモードにてテストしたところ、当フォーラムのすべてのカテゴリに対してスタッフタグにアクセスできることを確認しました。スタッフ専用リストにある他のタグについても同様の結果でした。また、「タグは誰でも使用可能」から「以下のグループのみ使用可能」へ、スタッフ専用タググループの権限をリセットして再度設定し直しましたが、変化はありませんでした。他にテストできることはありますでしょうか?

他に定義されたタググループはありますか、それとも上記のスクリーンショットがあなたのサイトにある唯一のグループですか?このテストに参加したユーザーは、他のグループのメンバーでもありますか?

矛盾するルールを持つ複数のタググループを作成することは可能です。ユーザーが_いずれか_のタググループでタグを使用する権限を持っている場合、他のグループで「使用できない」とするルールは無効になります。

これらは私が使用しているすべてのグループです。私が実施したテストは、何も所属していない基本ユーザーで行いました。

共通タグ:全員が利用可能

イベント:イベントカテゴリでのみ使用可能

「アクセス」とおっしゃる場合、トピックにタグを追加できることを意味しますか、それともタグを表示してクリックできるなどの操作が可能であることを意味しますか?

あなたの「Staff Tags」タググループ(ba-tips、cant-reproduce、featured など)に属するタグは、staff グループに所属するユーザーのみがトピックに追加できますが、全員が閲覧可能です。つまり、誰でもトピックの上部に表示されるこれらのタグを確認でき、タグをクリックしてそのタグが付けられた他のトピックを表示したりできます。

もし TL0 ユーザーが「Staff Tags」タグ(例:‘ba-tips’)をトピックに追加できてしまうのであれば、それは問題です。私はご提示いただいたスクリーンショットに基づき、ローカルの Discourse インスタンスでタグおよびタググループを再作成しました(各タググループのタグを、上記スクリーンショットの最初の 3 つに制限しています)。その結果、私の TL0/TL1 ユーザーは「新規トピック」ボタンから、あるいはトピックを作成して編集してから、「ba-tips」を追加することはできませんでした。別の方法や UI パスを通じてタグを追加することは可能ですか?

Jamie、ご返信ありがとうございます。私の説明が不十分で申し訳ありません。最新バージョンにアップグレードして再度テストを実行しましたが、結果は同じでした。再現手順は以下の通りです。

  1. TL0 または TL1 ユーザーとしてログインする
  2. セーフモードに切り替え、すべての機能を無効化する
  3. 任意のカテゴリを選択する
  4. 新しいトピックを作成する
  5. 管理者専用である「Featured」タグを選択する
  6. 「トピックを作成」をクリックする
  7. 投稿が作成され、Featured タグが追加される

他に何か関連するものを見つけました:tag.json のルート(例えばこちらなど)にアクセスできなくなっています。

Topics tagged featured

追記:おっと、気にしないでください。/tags/ が /tag/ に改名されたようで、それにより一部の自動化が機能しなくなっていたようです。

残念ながら、この問題のテストケースを作成するのにまだ苦労しています。これまでに行った手順は以下の通りです:

  1. コミット 6490fac881 で新しいサイトを作成
  2. 管理者ユーザー jamie.wilson を作成
  3. SiteSetting「タグ付けの有効化」を有効化
  4. 以下のタグを作成:
    360-renders
    add-ons
    advertisement
    conference
    contest
    meetup
    no-ads
    promotion-offered
    ba-tips
    cant-reproduce
    featured
  5. 提供されたスクリーンショットに従ってタググループを作成(デバッグの目的で、各グループにタグを 3 つ以下に制限)
  6. 「Events」カテゴリを作成し、「このカテゴリにタググループを制限する」の値を「Events」に設定
  7. 管理者ユーザーが Staff グループの「ba-tips」タグ付きで「Site Feedback」カテゴリにトピックを作成
  8. 管理者ユーザーからログアウト
  9. 新しいユーザー(メールリンクで有効化)normal.user を作成
  10. normal.user として、Uncategorized または Site Feedback に新しいトピックを作成。利用可能なタグ:360-renders, add-ons, advertisement

  1. Events に新しいトピックを作成。利用可能なタグ:conference, contest, meetup

(表示されていません)

  1. 管理者ユーザーが制限されたタグを normal.user の投稿に追加可能:

  1. 管理者ユーザーはすべての 3 つのタグを確認可能:

  1. normal.user は 2 つのタグのみを確認可能:

DiscourseTagging.permitted_tag_names(Guardian.new(User.find_by_username('normal.user')))
["360-renders", "add-ons", "advertisement", "conference", "contest", "meetup"]
DiscourseTagging.hidden_tag_names(Guardian.new(User.find_by_username('normal.user')))
["no-ads", "promotion-offered"]

もしかしたら、他の誰かがこの問題を再現できるかもしれません。現時点では私には再現できません。

問題の箇所が見つかったと思います:#featured がスタッフ限定リストと「共通タグ」リストの両方に存在していました。なぜそこに追加されたのかは分かりませんが、スタッフの権限を確認し、誰かが何かしらの操作で追加したのか調べてみます。お時間を無駄にしてしまい申し訳ありませんが、ご支援いただき本当にありがとうございます!:pray:

問題ありません!根本原因が特定され、新機能が意図した通りに動作していることが皆で確認でき、少し安心できました。

設定の問題が修正された今、これがあなたとあなたのサイトに役立つことを願っています。実際にどう機能するか、ぜひ教えてくださいね。