Development #60298
[API] Erreur sur le statut visible d'une demande via l'API
0%
Description
Appel sur /api/forms/<slug-form>/<id-demande>/
Le problème est qu'une demande dans un statut non visible de l'usager, dont le form est configuré avec "Roles de demandeur" à "aucun", présente via l'API dans "status" le statut non visible de l'usager :
"workflow": { "status": { "id": "0", "name": "Statut non visible de l'usager" }, "real_status": { "id": "0", "name": "Statut non visible de l'usager" } },
Sur un formulaire identique en changeant "Rôles de demandeur" à "Utilisateurs identifiés", le comportement est celui attendu, "status" contient le dernier statut visible de l'usager :
"workflow": { "status": { "id": "new", "name": "Nouveau" }, "real_status": { "id": "0", "name": "Statut non visible de l'usager" } },Vient de #59267 et reproduit en validation :
- form 1 avec "Roles de demandeur" à "aucun" : https://demarches-validation.test.entrouvert.org/backoffice/forms/197/
- form 2 avec "Rôles de demandeur" à "Utilisateurs identifiés" : https://demarches-validation.test.entrouvert.org/backoffice/forms/198/
- wf avec le statut caché et une fonction API : https://demarches-validation.test.entrouvert.org/backoffice/workflows/95/
- rôle associé à cette fonction : https://connexion-validation.test.entrouvert.org/manage/roles/2581/
- clé d'api avec ce rôle : https://demarches-validation.test.entrouvert.org/backoffice/settings/api-access/1/
- Identifiant d’accès : test-api
- Clé d’accès : d2d7640a-bc6e-40e0-ae86-32a38418b896
- Demande sur form 1 BO : https://demarches-validation.test.entrouvert.org/backoffice/management/test-visibilite-statut-api-1/1/
- Une demande sur form 2 BO : https://demarches-validation.test.entrouvert.org/backoffice/management/test-visibilite-statut-api-2/1/
- Demande sur form 1 avec cet accès API (HTTP BASIC) : https://demarches-validation.test.entrouvert.org/api/forms/test-visibilite-statut-api-1/1/
{ "id": "1", "digests": null, "display_id": "197-1", "display_name": "Test visibilit\u00e9 statut API 1 - n\u00b0197-1", "text": "Test visibilit\u00e9 statut API 1 - n\u00b0197-1", "receipt_time": "2022-01-05T13:33:58", "last_update_time": "2022-01-05T13:34:20", "criticality_level": 0, "url": "https://demarches-validation.test.entrouvert.org/test-visibilite-statut-api-1/1/", "fields": {}, "workflow": { "status": { "id": "0", "name": "Statut non visible de l'usager" }, "real_status": { "id": "0", "name": "Statut non visible de l'usager" } }, "roles": { "_api": [ { "name": "Test visibilit\u00e9 statut API", "text": "Test visibilit\u00e9 statut API", "allows_backoffice_access": true, "emails": [], "details": "", "emails_to_members": true, "slug": "test-visibilite-statut-api", "id": "f03693d45bc84a4283cdd45454545ad7" } ],
- Demande sur form 2 avec cet accès API (HTTP BASIC) : https://demarches-validation.test.entrouvert.org/api/forms/test-visibilite-statut-api-2/1/
<Response [200]> { "id": "1", "digests": null, "display_id": "198-1", "display_name": "Test visibilit\u00e9 statut API 2 - n\u00b0198-1", "text": "Test visibilit\u00e9 statut API 2 - n\u00b0198-1", "receipt_time": "2022-01-05T13:36:07", "last_update_time": "2022-01-05T13:36:22", "criticality_level": 0, "url": "https://demarches-validation.test.entrouvert.org/test-visibilite-statut-api-2/1/", "user": { "id": 127, "name": "Testapistatut Testapistatut", "email": "testapistatut@yopmail.com", "NameID": [ "9f486f4381ba49dc90c38693af40de5f" ] }, "fields": {}, "workflow": { "status": { "id": "new", "name": "Nouveau" }, "real_status": { "id": "0", "name": "Statut non visible de l'usager" } }, "roles": { "_api": [ { "name": "Test visibilit\u00e9 statut API", "text": "Test visibilit\u00e9 statut API", "allows_backoffice_access": true, "emails": [], "details": "", "emails_to_members": true, "slug": "test-visibilite-statut-api", "id": "f03693d45bc84a4283cdd45454545ad7" } ],
Fichiers
Révisions associées
Historique
Mis à jour par Frédéric Péters il y a plus de 2 ans
Pour résumer le propos : c'est https://demarches-validation.test.entrouvert.org/backoffice/management/test-visibilite-statut-api-2/1/ qui est dans le statut "Statut non visible de l'usager", quand on la regarde dans l'API https://demarches-validation.test.entrouvert.org/api/forms/test-visibilite-statut-api-1/1/ dedans "status" annonce "Statut non visible de l'usager" et non "Nouveau" ?
Mis à jour par Frédéric Péters il y a plus de 2 ans
- Assigné à mis à Frédéric Péters
Il n'y a pas d'utilisateur associé à la demande en question, dans cette situation c'est l'utilisateur associé à la requête qui est considéré, et lui il peut voir.
Mis à jour par Frédéric Péters il y a plus de 2 ans
- Fichier 0001-misc-remove-get_visible_status-fallback-to-request-u.patch 0001-misc-remove-get_visible_status-fallback-to-request-u.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Suppression du fallback automatique vers get_request().user qui amenait le problème ici.
Mis à jour par Thomas Noël il y a plus de 2 ans
J'ai du mal à suivre. "l'utilisateur associé à la requête" dans le cas d'un accès par l'API, il n'existe pas... si ?
Mis à jour par Frédéric Péters il y a plus de 2 ans
Il y a des endroits où on fait get_request()._user = get_user_from_api_query_string()
Mis à jour par Thomas Noël il y a plus de 2 ans
- Statut changé de Solution proposée à Solution validée
Frédéric Péters a écrit :
Il y a des endroits où on fait
get_request()._user = get_user_from_api_query_string()
Ah oui, c'est vrai.
Allons-y ainsi, c'est plus compréhensible de toute façon.
Mis à jour par Frédéric Péters il y a plus de 2 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit 97187b5437f6e5dfb3eefd9c068d2842bce575ad Author: Frédéric Péters <fpeters@entrouvert.com> Date: Wed Jan 5 14:33:54 2022 +0100 misc: remove get_visible_status fallback to request user (#60298) For API calls using API users anonymous formdata status visibility would be considered against the API user instead of nobody.
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
misc: remove get_visible_status fallback to request user (#60298)
For API calls using API users anonymous formdata status visibility would
be considered against the API user instead of nobody.