Le code d'identification de téléchargement restrictif rend difficile la rédaction de composants de thème utilisant des ressources téléchargées

Salut à tous,

J’ai récemment créé un composant de thème Discourse (GitHub - Beholder-Vision/discourse-insert-model-3d: A Discourse theme component for adding 3D models to topics) qui permet aux administrateurs de Discourse d’activer le téléchargement et l’affichage de modèles 3D sur leurs forums.

Tout semblait bien fonctionner au début, jusqu’à ce que je reçoive un rapport indiquant que certains modèles téléchargés avaient disparu, puis en vérifiant mon propre forum, j’ai constaté que les ressources téléchargées (modèles 3D et images d’aperçu) avaient également été purgées Insert Model 3D - #2 by patrickemin.

En lisant la documentation (Understanding Uploads, Images, and Attachments), j’avais supposé que les ressources téléchargées seraient en sécurité car elles étaient référencées par un message, mais après quelques recherches, j’ai trouvé ce code, discourse/app/models/post.rb at 03bb43f7468d3aa6e73bba0805193ae50c7ec2d5 · discourse/discourse · GitHub qui semble être responsable de l’identification des téléchargements sur le serveur. D’après ce que j’ai compris, un fichier téléchargé n’est considéré comme référencé par un message que s’il est référencé par l’une des balises HTML d’un nombre limité. Ainsi, un téléchargement lié sera reconnu s’il est référencé par l’attribut href d’un élément <a> mais pas s’il est référencé par l’attribut src d’un élément <model-viewer> (ce que mon nouveau composant de thème ajoute).

Quelqu’un qui connaît bien ce code pourrait-il confirmer si ma compréhension est correcte ou non ? Si c’est le cas, je pense que les créateurs de composants de thème peuvent marquer les ressources comme téléchargements en générant un lien <a> caché qui référence la ressource, mais il serait très utile que la documentation (Understanding Uploads, Images, and Attachments) soit mise à jour pour souligner ce piège.

Merci beaucoup
Alan

3 « J'aime »

Vos paramètres et votre source proviennent d’un parse JSON, donc faire cela automatiquement semble délicat (pour le moins).\n\nJ’ai l’impression qu’au niveau fondamental, cela demande à l’API de « joindre de manière permanente » un téléchargement à un post et de le marquer de telle sorte qu’il ne soit jamais supprimé.\n\nCela ouvre la porte à d’autres problèmes (où puis-je voir les téléchargements joints de manière permanente ? Quelles sont les limites ?).\n\nCela dit, la jointure permanente semble être la seule façon propre de résoudre ce problème.\n\nUn lien caché fonctionnera en effet comme solution de contournement.\n\nJe transforme cela en demande de fonctionnalité car cela fonctionne comme prévu, mais l’API ne vous facilite pas la tâche ici.\n\nJe vais signaler l’équipe dev-xp, qui pourrait avoir d’autres idées à ce sujet.