PnX-SI / gn_mobile_occtax

Application mobile pour la saisie dans le module Occtax de GeoNature
GNU General Public License v3.0
13 stars 2 forks source link

[OCCTAX] Requête sur les jdd #239

Open andriacap opened 6 months ago

andriacap commented 6 months ago

Version de l'application

Version d'Occtax-mobile affectée par le bug : Version de GeoNature utilisée : 2.13.3

Description du bug et comportement attendu

Il y a un soucis sur les permissions remontées pour la saisie de relevé occtax avec sélection des JDD . Suivant le modèle de la documentation la requête pour récupérer les JDD dans occtax-mobile est une requête GET alors que côté GN c'est une requête post pour pouvoir préciser le contexte (création dans occtax) et ainsi permettre de faire remonter les permissions associées à ce contexte et notamment sur la lecture des JDD.

Comment reproduire

Pour reproduire le problème il faut donner des permsissions comme précisé dans l'image ci dessous à un utilisateur test :

image

Il faut ensuite aller sur occtax mobile et faire un relevé, voir la liste des JDD remontée (qui est la liste entière des JDD et qui ne devrait pas l'être).

Issue en lien sur GN et qui a été corrigée côté GN : https://github.com/PnX-SI/GeoNature/issues/2815#issuecomment-1838725438

sgrimault commented 6 months ago

Bonjour @andriacap,

Je suppose que c'est avec la dernière version stable de l'application (2.6.x) ? Pour information, la version 2.7.0-rc3 corrige notamment l'appel à la route pour récupérer les jeux de données et fait donc un POST au lieu d'un GET.

camillemonchicourt commented 6 months ago

Si je comprends bien, le soucis est celui identifié et corrigé dans GeoNature 2.13.2, dans cette PR - https://github.com/PnX-SI/GeoNature/pull/2712/files ? Et non pas https://github.com/PnX-SI/GeoNature/issues/2815#issuecomment-1838725438 ?

Mais je ne suis pas au clair sur le sujet. Et je ne vois clair sur l'histoire de passer en POST ou GET pour interroger la route des JDD...

Ce soucis est assez embêtant. On est passé à côté du fait que cette évolution de GeoNature est aussi à répercuter dans Occtax-mobile. Il faut peut-être prévoir une release 2.6.2, compatible avec GeoNature 2.13, en attendant la sortie 2.7 d'Occtax-mobile ?

TheoLechemia commented 6 months ago

C'est encore un autre problème que https://github.com/PnX-SI/GeoNature/pull/2712/file. Ce commit fixait le fait que les permissions n'étaient pas prises en compte lors de l'appel en POST. Par contre pas de rapport avec https://github.com/PnX-SI/GeoNature/issues/2815#issuecomment-1838725438 qui était un problème de front côté GeoNature web.

Actuellement, la liste des JDD autorisés à la création dans Occtax est bonne si le paramètre create=OCCTAX (en POST ou en GET) -> on renvoie bien tous les JDD associés au module OCCTAX et ceux correspondant au niveau de SCOPE "Create" définit pour le module Occtax En analysant les "access log", je vois que le mobile appelle la route sans les bons paramètres : /api/meta/datasets?fields=modules. Via le paramètre field=modules, j'image qu'un filtre est fait côté appli mobile en récupérant les JDD associé au module. Mais aucun filtre de permission n'est effectué

@sgrimault est ce que dans la 2.7, tu passe bien ce paramètre create=OCCTAX dans le POST ?

camillemonchicourt commented 6 months ago

OK donc le soucis ne devrait pas être nouveau et présent depuis le départ... 🤔 Et donc depuis le départ cela renvoie tous les JDD en interrogeant sans filtre la route /datasets qui est ensuite filtrée localement au niveau du mobile pour ne garder que ceux associés au module Occtax. C'est ce que je comprends aussi de https://github.com/PnX-SI/gn_mobile_core/blob/master/docs/data_sync.adoc Mais donc ça ne filtre pas du tout selon les permissions... 🤔 A clarifier, préciser donc.

sgrimault commented 6 months ago

@TheoLechemia,

Voici la nouvelle requête qui est jouée sur la dernière version (2.7.0-rc3) : POST -> /api/meta/datasets?fields=modules avec comme body :

{
  "module_code": "OCCTAX"
}

L'application filtre ensuite les jeux de données qui correspondent au module souhaité (ici : "OCCTAX"). Ce fonctionnement remonte aux toutes premières versions de l'application où la synchronisation était découplée de l'application "Occtax" via une application dédiée "Sync" et donc "agnostique" sur les données. Je pense que maintenant on pourrait simplifier tout ça et que coté synchronisation ne remonter que les jeux de données déjà filtrées selon le module "OCCTAX".

TheoLechemia commented 6 months ago

Oui, maintenant il faut bien passer ça en POST : {"create": "OCCTAX"} cela va renvoyer uniquement les JDD associés au module OCCTAX et surtout cela va renvoyer uniquement les JDD sur lesquels l'utilisateur à des droite "CREATE" sur le module "OCCTAX"

sgrimault commented 6 months ago

Ok, merci :) et concernant le paramètre fields dans l'URL, je le laisse ?

camillemonchicourt commented 6 months ago

Non pas utile de préciser ?fields=modules car plus besoin ce champs, vu que tu ne filtreras plus localement.

andriacap commented 6 months ago

Bonjour , Bonne année et bonne santé à vous !

Je prends connaissance seulement maintenant de vos messages car j'étais en congés. Merci pour votre réactivité sur cette issue ! Du coup le problème des jdd (en lien avec les permissions Create OCCTAX ) sera résolu dans quelle release ? Merci d'avance et bonne journée :)

sgrimault commented 6 months ago

Bonjour,

Je vous souhaite également une bonne et heureuse année ! La correction est disponible dans la version 2.7.0-rc4.

Bonne journée :)

andriacap commented 6 months ago

Bonjour,

Merci beaucoup pour votre retour !

Bonne journée à vous aussi :)