La vérification des médias est contournée lorsque image_sizes est vide

Ce bug concerne le paramètre Skip review media groups (Ignorer les groupes de révision des médias).

Lors de la publication d’une image depuis un appareil mobile, le téléchargement de l’image réussit et le corps du message contient correctement une référence à l’image (par exemple, ...).

Cependant, la requête POST /posts suivante contient :

“image_sizes”: {}

La vérification de révision des médias côté serveur ne s’exécute que lorsque manager.args[:image_sizes].present? est vrai :

if manager.args[:image_sizes].present? &&
       !user.in_any_groups?(SiteSetting.skip_review_media_groups_map)
    return :contains_media
  end

Un hachage vide n’est pas considéré comme « présent » (present?) en Ruby, donc le message n’est pas identifié comme contenant des médias et n’est pas soumis à révision. La vérification skip_review_media_groups n’est donc jamais atteinte.

Preuves HAR :

  • POST /uploads a réussi (2xx).
  • La charge utile de POST /posts contient du Markdown d’image dans raw.
  • La même charge utile contient “image_sizes”: {}.
  • Le message n’a pas été mis en file d’attente pour révision.

Le composeur web construit image_sizes à partir des images dans le DOM de l’aperçu de l’éditeur. Cela rend la révision des médias dépendante des métadonnées d’aperçu fournies par le client, qui peuvent être manquantes sur les clients mobiles ou si l’image d’aperçu ne s’est pas chargée.

Comportement attendu : Un message contenant une image téléchargée/intégrée devrait entrer en révision des médias, indépendamment du fait que le client envoie ou non les dimensions de l’image.

Correction suggérée :

  1. Détection des médias côté serveur à partir du contenu du message — Déterminer si un message contient des médias en inspectant le contenu raw ou cooked du message (ou les références de téléchargement) sur le serveur, au lieu de se fier uniquement au champ image_sizes fourni par le client.

  2. Réviser tous les fichiers médias téléchargés (meilleure option que 1) — Au lieu de ne réviser que les fichiers médias apparaissant dans un message, réviser directement tous les fichiers médias téléchargés par l’utilisateur. Cela élimine entièrement la dépendance aux métadonnées au niveau du message et garantit qu’aucun média téléchargé ne contourne la file d’attente de révision, quel que soit le client ou le point de terminaison utilisé.