PnX-SI / gn_mobile_core

Module GeoNature de synchronisation mobile
GNU General Public License v3.0
5 stars 1 forks source link

Deconnection, perte des données à synchroniser, données par défaut... #31

Closed amandine-sahl closed 3 years ago

amandine-sahl commented 3 years ago

Nous avons eu des comportements étranges difficilement reproductibles.

Cas 1 : l'utilisatrice n'avait pas utilisé l'application depuis un moment

Cas 2 : Test cafouilleux suite à ce problème (reproduit 1 seule fois) Après un passage en mode avion, et nous ne savons pas quoi, les données observateurs, jdd ne sont plus accessibles.

Cas 3 : Déconnection de l'utilisateur 1 / Se déconnecter 2 / Créer un relevé 3 / 1 relevé non synchronisé apparait dans occtax (et pas dans les relevés en cours cf issue #78) 4 / 0 relevé non synchronisé sous sync qui n'affiche pas la page d'authentification 5 / Authentification de l'utilisateur 6 / Toujours aucun relevé à synchronisé dans sync (alors qu'il y en a 1 présent dans occtax) 7 / Fermeture de l'application 8 / 1 relevé non synchronisé sous sync

sgrimault commented 3 years ago

Bonjour @amandine-sahl Je ferai des tests complémentaires de mon coté, notamment sur le comportement de la gestion des relevés à synchroniser si l'utilisateur n'est pas connecté.

joelclems commented 3 years ago

je ne sais pas si ça a sa place ici mais avec la version 1.1.4.dev j'ai le comportement suivant

il faudrait peut être rediriger vers la page de connexion dans ce cas

sgrimault commented 3 years ago

Bonjour @joelclems

C'est bien ici pour tout ce qui touche à la synchronisation des données depuis GeoNature. Concernant l'erreur, l'application n'attrape que les erreurs 401 (non authentifié sur une ressource demandée). Une erreur 403 veut simplement dire que l'utilisateur connecté n'a pas les droits suffisants sur la ressource en question.

Auriez vous la possibilité de me fournir les logs de l'application "Sync" (logcat) ?

joelclems commented 3 years ago

J'ai par exemple ces lignes là

02-24 19:16:12.302 8435 8579 D OkHttp : --> POST [ https://gngua.brgm-rec.fr/geonature/api/occtax/releve | https://gngua.brgm-rec.fr/geonature/api/occtax/releve ] (1478-byte body)
02-24 19:16:12.610 8435 8579 D OkHttp : <-- 403 [ https://gngua.brgm-rec.fr/geonature/api/occtax/releve | https://gngua.brgm-rec.fr/geonature/api/occtax/releve ] (307ms, 18-byte body)

du coté serveur j'avais Invalid Token : BadSignature

pour être plus précis je m'étaitsconnecté une première fois entre temps j'ai du redemarré les appli (GN, TH et UH) je ne sais pas si les token on une durée de validité ou si c'est le redemarrage qui est en cause

joelclems commented 3 years ago

GN peux sortir une erreur 403 si on est pas connecté par exemple

https://gngua.brgm-rec.fr/geonature/api/gn_commons/modules

sgrimault commented 3 years ago

Le cookie a une durée de validité (configurable coté GeoNature ?) et l'application de synchronisation le transmet à chaque requête faite lors de la synchronisation. Si une requête tombe en erreur, la synchronisation s'arrête et l'utilisateur est redirigé vers la page de login (en cas d'erreur 401 uniquement).

Il y a eu des changements récemment sur GeoNature ? Par exemple, sur l'instance de demo je n'ai plus d'erreurs sur les routes protégées, même non connecté avec une simple page Web en guise réponse :

Idéalement, il faudrait que ces routes soient protégées avec les erreurs suivantes :

TheoLechemia commented 3 years ago

Il y a effectivement eu un changement 2.6. Si on appel une route de l'API depuis le backend (avec comme header accept: application/json) alors il y a bien le comportement attendu: 401 si non connecté, 403 si non autorisé. Si on appel la route depuis le navigateur, il y a une redirection vers la page de login à la place de la 401.

sgrimault commented 3 years ago

C'est déjà le cas côté client GeoNature de l'application de synchronisation. Toutes les requêtes jouées ont le header Accept: application/json.

Il y a effectivement eu un changement 2.6. Si on appel une route de l'API depuis le backend (avec comme header accept: application/json) alors il y a bien le comportement attendu: 401 si non connecté, 403 si non autorisé. Si on appel la route depuis le navigateur, il y a une redirection vers la page de login à la place de la 401.

DonovanMaillard commented 3 years ago

A priori à jour sur ces questions. @sgrimault, @amandine-sahl c'est OK pour fermer ce ticket ?

sgrimault commented 3 years ago

@DonovanMaillard Ok pour moi :)