Projet

Général

Profil

Development #58226

faire qu'un GET sur un trigger renvoie un 404 s'il n'existe pas

Ajouté par Thomas Noël il y a plus de 2 ans. Mis à jour il y a plus de 2 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
-
Version cible:
-
Début:
27 octobre 2021
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

Dans le but de vérifier qu'un saut par déclencheur est disponible sur une demande donnée, on pourrait avoir la méthode OPTIONS disponible :

OPTIONS /<slug-demarche>/<numero-de-demande>/jump/trigger/<declencheur>/ HTTP/1.1

HTTP/1.1 204 No Content
Allow: OPTIONS, POST
...

Cela permettrait notamment à un système externe de paiement de paiement (combo/lingo) de savoir qu'une demande liée à un élément de panier est bien toujours en attente de paiement.

(ce ticket pour discuter de l'idée... qui ne me semble pas très complexe à implémenter)


Fichiers


Demandes liées

Lié à Combo - Development #58210: ne pas permettre le paiement si la demande correspondante n'existe plusFermé26 octobre 2021

Actions

Révisions associées

Révision 949d9ecf (diff)
Ajouté par Thomas Noël il y a plus de 2 ans

wf/jump: respond 404 on non-existing trigger, on all HTTP methods (#58226)

Historique

#1

Mis à jour par Thomas Noël il y a plus de 2 ans

  • Lié à Development #58210: ne pas permettre le paiement si la demande correspondante n'existe plus ajouté
#2

Mis à jour par Frédéric Péters il y a plus de 2 ans

Si je comprends bien c'est parce que ça va faire actuellement une 403, (je regarde juste le trigger action globale),

        if not get_request().get_method() == 'POST':
            raise errors.AccessForbiddenError('must be POST')

mais ça donne donc : si ça n'existe pas 404, si ça existe mais appel pas POST 403, si existe et POST déclenchement.

Il n'y aurait pas suffisamment ici pour détecter, du coup ? (faire != 404).

~~

Ok sur l'action de saut par contre, la méthode est vérifiée avant d'avoir vérifié l'existence du trigger correspondant, ce qui demanderait alors pour avoir le même comportement :

--- a/wcs/wf/jump.py
+++ b/wcs/wf/jump.py
@@ -71,9 +71,6 @@ class TriggerDirectory(Directory):
         if get_request().is_json():
             get_response().set_content_type('application/json')

-        if not get_request().get_method() == 'POST':
-            raise errors.AccessForbiddenError()
-
         signed_request = is_url_signed()
         user = get_user_from_api_query_string() or get_request().user
         for item in self.wfstatus.items:
@@ -82,6 +79,8 @@ class TriggerDirectory(Directory):
             if not hasattr(item, 'trigger'):
                 continue
             if component == item.trigger:
+                if not get_request().get_method() == 'POST':
+                    raise errors.AccessForbiddenError()
                 if signed_request and not item.by:
                     pass
                 elif not item.check_auth(self.formdata, user):

(pas testé).

#3

Mis à jour par Thomas Noël il y a plus de 2 ans

  • Sujet changé de avoir la méthode OPTIONS sur les url de trigger jump/trigger à faire qu'un GET sur un trigger renvoie un 404 s'il n'existe pas

Ouaip (j'avais imaginé ça, "faire un GET sur le déclencheur"), je n'avais juste pas très envie de jouer sur un effet de bord, mais ça pourrait rouler comme ça et rester clair dans combo/lingo.

Je modifie le titre du ticket.

Actuellement donc :
  • un GET va renvoyer un 404 sur un trigger d'action globale, c'est ok pour ça
  • un GET va renvoyer un 403 sur un déclencheur de saut même si le trigger n'existe pas, et il faut corriger ça : renvoyer 403 seulement si le trigger existe, et sinon 404.
#4

Mis à jour par Thomas Noël il y a plus de 2 ans

#5

Mis à jour par Frédéric Péters il y a plus de 2 ans

  • Statut changé de Solution proposée à Solution validée
#6

Mis à jour par Thomas Noël il y a plus de 2 ans

  • Statut changé de Solution validée à Résolu (à déployer)
commit 949d9ecfbb8b41fc2c7e119895de80eeb087680b
Author: Thomas NOEL <tnoel@entrouvert.com>
Date:   Wed Oct 27 16:29:20 2021 +0200

    wf/jump: respond 404 on non-existing trigger, on all HTTP methods (#58226)

#7

Mis à jour par Frédéric Péters il y a plus de 2 ans

  • Statut changé de Résolu (à déployer) à Solution déployée

Formats disponibles : Atom PDF