Développement #90465
erreurs 400 sur la récupération des PDF des factures
0%
Description
On a beaucoup d'erreur sur la récupération des PDF des factures
https://sentry.entrouvert.org/entrouvert/publik/issues/62635/
ça concerne le connecteur maélis,
https://sentry.entrouvert.org/entrouvert/publik/issues/118703/
et aussi axel (pour toulouse et caluire),
https://sentry.entrouvert.org/entrouvert/publik/issues/115059/
https://sentry.entrouvert.org/entrouvert/publik/issues/115222/
Related issues
Associated revisions
toulouse-axel: catch extra parameters on pdf invoice endpoint (#90465)
caluire-axel: catch extra parameters on pdf invoice endpoint (#90465)
History
Updated by Nicolas Roche 9 months ago
Le wrapper combo ajoute un paramètre 'email' quand les usagers ne sont pas authentifiés.
Ce paramètre n'est pas définis par les endpoints des derniers connecteurs qui renvoient des factures PDF à lingo.
Updated by Robot Gitea 9 months ago
- Tracker changed from Support to Développement
- Status changed from Nouveau to Solution proposée
Nicolas Roche (nroche) a ouvert une pull request sur Gitea concernant cette demande :
- URL : https://git.entrouvert.org/entrouvert/passerelle/pulls/523
- Titre : Prendre en charge le paramètre email sur les endpoint des factures PDF
- Modifications : https://git.entrouvert.org/entrouvert/passerelle/pulls/523/files
Updated by Frédéric Péters 9 months ago
Le wrapper combo ajoute un paramètre 'email' quand les usagers ne sont pas authentifiés.
Mais le problème serait alors/aussi au niveau de la construction des portails, les cellules affichant des factures ne devraient pas être affichées à des usagers non connectés. ?
Updated by Frédéric Péters 9 months ago
Et c'est quel parcours qui donnerait à l'usager un lien https://site/lingo/item/5/xxx/yyy/pdf alors que l'usager n'est pas connecté ? Cela me parait très curieux, et à creuser davantage.
Updated by Nicolas Roche 8 months ago
Mais le problème serait alors/aussi au niveau de la construction des portails, les cellules affichant des factures ne devraient pas être affichées à des usagers non connectés. ?
Oui, je pense que les factures ne doivent pas être affichées à des usagers non-connectés.
Concernant parsifal c'est bien le cas : la page et la cellule requièrent toutes les deux le rôle "Adulte avec DUI".
https://famille-loisirs.eservices.toulouse-metropole.fr/manage/pages/32/#open:lingo_invoicescell-1-visibility
Et c'est quel parcours qui donnerait à l'usager un lien https://site/lingo/item/5/xxx/yyy/pdf alors que l'usager n'est pas connecté ? Cela me parait très curieux, et à creuser davantage.
Je reproduis en supprimant mes cookies et donc je pense à des personnes qui laisseraient leur ordinateur allumé avec un onglet sur les factures.
Maintenant que tu me poses la question, je me dis que ça fait beaucoup d'erreurs pour un parcours qui ne doit pas arriver souvent.
J'essaye de trouver un meilleurs parcours qui explique ces erreurs.
Updated by Nicolas Roche 8 months ago
- https://famille-loisirs.eservices.toulouse-metropole.fr/lingo/item/7/a2ac5040e50880e29583f02ec0d2/d84dd02181962181f7a699f360f304357a94fdb8129d/pdf
COOKIES: No cookie data
HTTP_REFERER = 'https://famille-loisirs.eservices.toulouse-metropole.fr/mes-factures-paniers/ - https://passerelle-famille-loisirs.eservices.toulouse-metropole.fr/toulouse-maelis/maelis/regie/105/invoice/295878-23698/pdf/?NameID=&email=
Updated by Benjamin Dauvergne 8 months ago
Nicolas Roche a écrit :
D'après les traces (reçues par mail) ça me semble bien lié à l'absence de cookies :
- https://famille-loisirs.eservices.toulouse-metropole.fr/lingo/item/7/a2ac5040e50880e29583f02ec0d2/d84dd02181962181f7a699f360f304357a94fdb8129d/pdf
COOKIES: No cookie data
HTTP_REFERER = 'https://famille-loisirs.eservices.toulouse-metropole.fr/mes-factures-paniers/- https://passerelle-famille-loisirs.eservices.toulouse-metropole.fr/toulouse-maelis/maelis/regie/105/invoice/295878-23698/pdf/?NameID=&email=
Oui c'est exactement ça, ton analyse est la bonne. Ça me semble indiquer que forcer une authentification sur combo.apps.lingo.views.ItemDownloadView serait une bonne idée, je ne vois aucun cas où le PDF est visible et un utilisateur connecté; il y a le cas de cellule SelfInvoiceView mais elle ne doit justement rien rapporter à part le montant et certainement pas la facture.
À vrai dire le cas est quasiment déjà traité correctement dans le code il faudrait juste faire taire les erreurs.
if data.status_code != 200: logging.error(self.log_error, data.status_code) messages.error(request, self.message_error) if self.request.headers.get('Referer'): return HttpResponseRedirect(self.request.headers.get('Referer')) return HttpResponseRedirect('/')
et ça donne aussi cette trace encore plus obscure justement et qui a été mise sous le tapis: https://sentry.entrouvert.org/entrouvert/publik/issues/62635/
Updated by Benjamin Dauvergne 8 months ago
- Related to Bug #11033: gérer les problèmes de connecteur dans ItemDownloadView added
Updated by Benjamin Dauvergne 8 months ago
- Related to Développement #79939: lingo: pouvoir télécharger l'attestation de paiement d'une facture added
Updated by Benjamin Dauvergne 8 months ago
- Related to Développement #91259: Ne pas logger d'erreur quand le PDF d'une facture n'est simplement pas disponible dans la situation actuelle added
Updated by Frédéric Péters 8 months ago
absence de cookies
Sans session côté combo, pour le téléchargement d'une facture je vois combo faire :
try: data = regie.get_invoice_pdf( request.user,
avec get_invoice_pdf qui est :
def get_invoice_pdf(self, user, invoice_id, payer_external_id=None, payments_certificate=False): """ downloads item's file """ if self.is_remote() and user: url = self.webservice_url + '/invoice/%s/' % invoice_id (...)
il me semble que la volonté là serait que sans user il ne devrait pas y avoir d'appel; sauf que ça va se taper AnonymousUser qui va être évalué comme étant ok et faire l'appel qui échoue ici.
Il y a semble-t-il quelque chose à remonter et corriger là, et ça ferait que cette situation côté passerelle n'arriverait pas.
Updated by Benjamin Dauvergne 8 months ago
Frédéric Péters a écrit :
Il y a semble-t-il quelque chose à remonter et corriger là, et ça ferait que cette situation côté passerelle n'arriverait pas.
Coté passerelle il semble il y avoir les validations nécessaires qui font que ça finit en 400 je trouve ça propre. On peut continuer sur #91259 concernant combo. Au final je n'ai pas l'impression qu'il y ait quelque chose à corriger ici dans combo passerelle, on va transformer des 400 pour paramètre invalide en 404 mais ça n'apportera rien d'utile pour le code appelant. Je relis quand même la PR.
Updated by Robot Gitea 8 months ago
- Status changed from Solution proposée to En cours
Benjamin Dauvergne (bdauvergne) a relu et demandé des modifications sur une pull request sur Gitea concernant cette demande :
Updated by Robot Gitea 7 months ago
Nicolas Roche (nroche) a demandé une relecture de Benjamin Dauvergne (bdauvergne) sur une pull request sur Gitea concernant cette demande :
Updated by Robot Gitea 7 months ago
- Status changed from Solution proposée to Solution validée
Benjamin Dauvergne (bdauvergne) a approuvé une pull request sur Gitea concernant cette demande :
Updated by Robot Gitea 7 months ago
- Status changed from Solution validée to Résolu (à déployer)
Benjamin Dauvergne (bdauvergne) a mergé une pull request sur Gitea concernant cette demande :
- URL : https://git.entrouvert.org/entrouvert/combo/pulls/280
- Titre : lingo: do not log 404 error on pdf download (#91259)
- Modifications : https://git.entrouvert.org/entrouvert/combo/pulls/280/files
Updated by Robot Gitea 7 months ago
Nicolas Roche (nroche) a mergé une pull request sur Gitea concernant cette demande :
- URL : https://git.entrouvert.org/entrouvert/passerelle/pulls/523
- Titre : Prendre en charge le paramètre email sur les endpoint des factures PDF (#90465)
- Modifications : https://git.entrouvert.org/entrouvert/passerelle/pulls/523/files
Updated by Transition automatique 7 months ago
- Status changed from Résolu (à déployer) to Solution déployée
toulouse_maelis: catch extra parameters on pdf invoice endpoint (#90465)