Development #55374
api, servir les fichiers d'une demande quand l'url est signée
0%
Description
Pour permettre à combo d'afficher/lier l'info d'un champ de fichier d'une fiche, mon idée est que combo serve une redirection signée vers l'url du fichier.
Basiquement,
def download(self): - self.check_receiver() + if not is_url_signed(): + self.check_receiver() ...
mais deux problèmes :
1/ Pour un champ fichier d'une fiche, l'URL retournée va être de ce type,
"url": "https://.../backoffice/data/<slug>/<id card>/download?f=<id champ>",
et la traversée de l'URL va faire qu'il y aura d'abord vérif que le /backoffice/ est accessible, puis que sa section /data/ est accessible, etc. et je ne suis pas chaud à multiplier les bypass de vérification de permissions quand l'url est signée.
Pour répondre à ça, mon idée est de simplement servir les fichiers depuis une URL qui n'a pas ces vérifications, produire/servir
"url": "https://.../api/cards/<slug>/<id card>/download?f=<id champ>",
2/ cette URL download?f=... elle est elle-même une redirection vers .../files/<component>/<filename>, c'est ainsi pour terminer l'url avec le nom de fichier pour un truc clean quand l'usager veut enregistrer le fichier.
Réponse ici que dans le cas d'un appel signé, on serve directement depuis la vue "download" le fichier, sans cette dernière redirection de confort.
Fichiers
Demandes liées
Révisions associées
Historique
Mis à jour par Frédéric Péters il y a presque 3 ans
- Lié à Development #51994: Afficher les fichiers dans la cellule Combo "Contenu d'une fiche" ajouté
Mis à jour par Frédéric Péters il y a presque 3 ans
- Lié à Development #49521: Rendre publique l'url d'un document (Fiche) ajouté
Mis à jour par Frédéric Péters il y a presque 3 ans
- Fichier 0001-misc-directly-serve-cards-file-fields-when-url-is-si.patch 0001-misc-directly-serve-cards-file-fields-when-url-is-si.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Mis à jour par Paul Marillonnet il y a presque 3 ans
Et ça ne va pas casser des trucs déjà en place ? (j’ai l’impression qu’avec ce patch on simplifie notamment en supprimant un niveau de redirection. Et donc est-ce qu’il n’y a pas déjà des endroits ici et là où, même en ayant fourni une url signée, on s’attend à être redirigé une fois de plus par rapport à ce qui se fera une fois ce patch passé).
Mis à jour par Frédéric Péters il y a presque 3 ans
Et donc est-ce qu’il n’y a pas déjà des endroits ici et là où, même en ayant fourni une url signée,
Non il n'y a pas ça parce qu'aujourd'hui il n'y pas de possibilité de récupérer les fichiers en utilisant une url signée, c'est bloqué avant, c'est le changement plus haut :
def download(self): - self.check_receiver() + if not is_url_signed(): + self.check_receiver()
Mis à jour par Paul Marillonnet il y a presque 3 ans
- Statut changé de Solution proposée à Solution validée
Ah oui, en relisant je m’étais imaginé que ça simplifiait grandement l’affaire (de quelque chose déjà possible en mode bidouille), alors que ce n’était pas possible du tout avant.
Merci la clarification, c’est ok pour moi.
Mis à jour par Frédéric Péters il y a presque 3 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit d2496c3973b1b277f1ae9001dda4e79fcb1a51bc Author: Frédéric Péters <fpeters@entrouvert.com> Date: Sun Jul 4 15:12:12 2021 +0200 misc: directly serve cards file fields when url is signed (#55374)
Mis à jour par Frédéric Péters il y a presque 3 ans
- Statut changé de Résolu (à déployer) à Solution déployée
misc: directly serve cards file fields when url is signed (#55374)