Projet

Général

Profil

Development #60298

[API] Erreur sur le statut visible d'une demande via l'API

Ajouté par Mikaël Ates 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:
05 janvier 2022
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

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 :
  • 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

Révision 97187b54 (diff)
Ajouté par Frédéric Péters il y a plus de 2 ans

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.

Historique

#2

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" ?

#3

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.

#4

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

Suppression du fallback automatique vers get_request().user qui amenait le problème ici.

#5

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 ?

#6

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()

#7

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.

#8

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.
#9

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
#10

Mis à jour par Transition automatique il y a environ 2 ans

Automatic expiration

Formats disponibles : Atom PDF