「埋め込みメディア投稿が許可されているグループ」と「投稿の表示に戻すワークフロー」の間に競合があります。
投稿者が許可されたメディアグループに属していない場合、その投稿が(フラグによって)非表示になった後、モデレーターがその非表示の投稿を編集してメディアを追加すると、投稿を表示に戻そうとすると以下のエラーで失敗します。
ActiveRecord::RecordInvalid
Validation failed: Sorry, you can't embed media items in a post.
表示に戻すプロセスは、モデレーターの権限ではなく、元の投稿者の権限を使用してメディアの検証を再実行するため、表示に戻す処理が失敗します。
再現手順
- 埋め込みメディア投稿が許可されているグループを設定し、信頼度の低いユーザーを除外します。
- 許可されたグループに含まれていないユーザーを使用して投稿を作成します。
- その投稿がシステムフラグによって非表示にされるようにします。(ここが少し不確かです。投稿はフラグによってのみ非表示にでき、スタッフによる手動操作はできないように見えます。スタッフはトピックは非表示にできますが、個々の投稿は非表示にできません。もし間違っていたら訂正してください。)
- モデレーターが非表示の投稿を編集し、メディア(画像/動画)を挿入します。
- 投稿を表示に戻そうと試みます(UIから、またはRailsコンソールで
post.unhide!を実行します)。
- 操作が以下のエラーで失敗します。
ActiveRecord::RecordInvalid Validation failed: Sorry, you can't embed media items in a post.
「いいね!」 2
sam
(Sam Saffron)
2
@kris.kotlarek さん、こちらについてどう思われますか?
私は安全だと思います。特に、検証をまだ期待しているコールサイトである PostRevisor#remove_flags_and_unhide_post があるため、追加のパラメーターによってもう少し安全性が高まります。
とはいえ、これらのコードパスは非常に複雑なので、注意深いレビューに値します。
「いいね!」 2
このバグを報告していただきありがとうございます。このPRで修正されました:
「いいね!」 2
このトピックは3日後に自動的にクローズされました。新しい返信は許可されていません。