Development #96114
lingo: vérifier que user est authentifié avant de construire des urls pour récupérer des factures
0%
Description
Par exemple ici:
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 if payments_certificate: url += 'payments/' url += 'pdf/' if payer_external_id: url += '?payer_external_id=%s' % payer_external_id return requests.get( url, user=user if not payer_external_id else None, without_user=bool(payer_external_id), remote_service='auto', cache_duration=0, ) raise PermissionDenied
user peut être non null mais non authentifié (AnonymousUser); ce qui produira un appel pour récupérer la facture pdf, et côté lingo ça donne des sentry comme celle-ci:
https://sentry.entrouvert.org/entrouvert/publik/issues/129678/
Où on voit dans l'url un ?NameID=&email=&orig=mes-demarches.nimes.fr
: pas de NameId.
Cette requête n'aurait pas dû être produite et combo aurait dû lancer un PermissionDenied.
Note:
Je pense que le user a un onglet ouvert avec la liste de ses factures, il oublie cet onglet, il clique sur un lien "télécharger" alors que sa session a expiré; la vue ItemDownloadView
n'est pas décorée pour requérir une authentification, elle compte sur get_invoice_pdf pour lui signifier que ça n'est pas possible:
try: data = regie.get_invoice_pdf( request.user, item_id, payer_external_id=payer_external_id, payments_certificate=self.payments_certificate, ) except PermissionDenied: return HttpResponseForbidden()
History
Updated by Robot Gitea about 21 hours ago
- Status changed from Nouveau to Solution proposée
Lauréline Guérin (lguerin) a ouvert une pull request sur Gitea concernant cette demande :
- URL : https://git.entrouvert.org/entrouvert/combo/pulls/354
- Titre : lingo: check user is authenticated (#96114)
- Modifications : https://git.entrouvert.org/entrouvert/combo/pulls/354/files