Projet

Général

Profil

Development #656

Accès aux formulaires via un "code de suivi"

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

Statut:
Fermé
Priorité:
Normal
Assigné à:
-
Version cible:
-
Début:
25 août 2011
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:

Description

L'épisode "discussion avec la CNIL" m'amène à (re)lancer l'idée de permettre à l'utilisateur le suivi d'un formulaire sans disposer d'un compte.

Pour cela, on pourrait mettre en place la génération d'un "code de suivi" sur chaque formdata reçu. Typiquement, un code du genre "28ZPM768", que les gens peuvent recopier quelque part. Le code sera disponible via une variable de substitution [form_code].

Ensuite, on rend possible l'accès au formulaire via une URL du genre https://xxx/code/28ZPM768 : l'utilisateur qui entre cette adresse est alors considéré comme propriétaire du formulaire (expéditeur) : il a les droits correspondants dans le workflow.

(idée annexe: ne permettre "l'accès par code de suivi" que pour certains formulaires, via une checkbox).


Fichiers


Demandes liées

Lié à w.c.s. - Development #4858: Sauvegarde continue des brouillonsFermé28 mai 2014

Actions

Révisions associées

Révision b2f97207 (diff)
Ajouté par Frédéric Péters il y a environ 9 ans

general: add tracking code object (#656)

Révision 402e6f65 (diff)
Ajouté par Frédéric Péters il y a environ 9 ans

general: add tracking code object (#656)

Historique

#1

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

  • Statut changé de Nouveau à Solution déployée

C'est pas noté ici mais il y a depuis septembre wcs/wf/anonymous_access.py, et dans auquotidien ça ajoute sur la page d'accueil un champ "Tracking" permettant de taper un code de suivi.

#2

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

Je vais être pénible, mais je voyais cet accès plus "générique" dans w.c.s., probablement en dehors d'un workflow, par exemple pour permettre :
  • l'accès à toutes les étapes du workflow (comme l'accès par login/passe), et pas seulement celles autorisées ;
  • la reprise d'un brouillon (donc avant tout workflow).

... mais c'est donc peut-être un autre système que je décris ici, et les actions de wf ajoutées actuellement gardent leur utilité par ailleurs.

#3

Mis à jour par Thomas Noël il y a environ 12 ans

proposition de patch qui ajoute un formdata.tracking_code

#4

Mis à jour par Frédéric Péters il y a environ 12 ans

  • Version cible mis à Au-quotidien 2012.3
#5

Mis à jour par Thomas Noël il y a environ 12 ans

Suite du patch (s'ajoute au précédent) :
- gestion des tracking_code dans l'objet session
- interface pour ajouter un tracking code dans sa session via un formulaire dans /trackingcode

#6

Mis à jour par Thomas Noël il y a environ 12 ans

Et fin du patch avec la gestion des droits associée à la présence de tracking_code dans la session (droits = accès au formulaire + actions de workflow en tant qu'expéditeur).

Ce patch n'est pas très élégant car il faut gérer le cas où "user" n'existe pas (None). Autre idée bienvenue...

Cas testés rapidement avec workflow permettant des changements de statut :
  1. envoi d'un formulaire en anonyme puis accès + actions de workflow via tracking code en anonyme
  2. envoi d'un formulaire en anonyme puis accès + actions de workflow via tracking code en étant connecté sous user "X"
  3. l'inverse : envoi d'un formulaire en tant que user "X" puis accès + actions de workflow via tracking code en anonyme
  4. le mix : envoi d'un formulaire en tant que user "X" puis accès + actions de workflow via tracking code en étant connecté sous user "Y"
#7

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

  • Version cible changé de Au-quotidien 2012.3 à Au-quotidien 2014.5
#8

Mis à jour par Thomas Noël il y a environ 10 ans

  • Version cible Au-quotidien 2014.5 supprimé
#9

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

  • Patch proposed mis à Non

Mise à jour eocamp, on aurait :

  • en mode connecté, dès la première page, bloc "code de suivi"
  • en mode déconnecté, sur la première page, bloc "conserver un brouillon de ma demande" (libellé à définir), sur les suivantes, bloc "code de suivi"

Le bloc "code de suivi, il viendrait au-dessus (à tester) des étapes du formulaire, présenterait un petit texte, le code, et un bouton "me l'envoyer par mail" (cela ouvrirait une popup avec un champ email précomplété avec l'adresse de l'usager si on l'a, possibilité d'en ajouter d'autres, etc.)

Quand le bloc est là il y a sauvegarde automatique ajax du contenu.

#10

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

Dans le même cadre, voir s'il y a moyen de faciliter l'écriture d'un handler "beforeunload", qui permettrait d'alerter la personne qui quitte un formulaire entamé. (par exemple en plaçant un attribut data-unsaved sur le <form>).

#11

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

Frédéric Péters a écrit :

  • en mode connecté, dès la première page, bloc "code de suivi"
  • en mode déconnecté, sur la première page, bloc "conserver un brouillon de ma demande" (libellé à définir), sur les suivantes, bloc "code de suivi"

Pour moi, on avait conclu sur "faire la même chose pour les deux modes", i.e. toujours comme le mode déconnecté décrit plus haut.
Ca me semble plus simple à expliquer/programmer/documenter... et pas du tout gênant pour les usagers connectés (au contraire, ça permet de vérifier qu'ils veulent bien qu'on enregistre le début de leur demande).

#12

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

Frédéric Péters a écrit :

Dans le même cadre, voir s'il y a moyen de faciliter l'écriture d'un handler "beforeunload", qui permettrait d'alerter la personne qui quitte un formulaire entamé. (par exemple en plaçant un attribut data-unsaved sur le <form>).

J'ai fait #6116 pour ça.

#13

Mis à jour par Pierre Cros il y a plus de 9 ans

Thomas Noël a écrit :

Pour moi, on avait conclu sur "faire la même chose pour les deux modes", i.e. toujours comme le mode déconnecté décrit plus haut.
Ca me semble plus simple à expliquer/programmer/documenter... et pas du tout gênant pour les usagers connectés (au contraire, ça permet de vérifier qu'ils veulent bien qu'on enregistre le début de leur demande).

Absolument d'accord avec Thomas en tous points.

#14

Mis à jour par Victor Claudet il y a plus de 9 ans

#15

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

J'ai créé une branche pour contenir ce travail, http://repos.entrouvert.org/wcs.git/log/?h=wip/tracking-code

Pour le moment ça contient le patch de #6098 mais aussi la sauvegarde automatique des brouillons (i.e. une fois qu'on est sur un brouillon il est sauvegardé automatiquement de manière régulière, mais il n'y a pas de création automatique de brouillon).

#16

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

Dans wip/tracking-code, sur qommon.forms.js je pense qu'il manque un "last_auto_save = new_auto_save" après que la sauvegarde a réussi.

#17

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

En effet; je viens de corriger ça.

Aussi, je viens d'ajouter dans la branche un objet TrackingCode (mais pas encore d'interface pour l'utiliser).

#18

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

Je viens de pousser une mise à jour qui ajoute les éléments d'UI, de manière encore brute, mais ça permet de voir un peu les déroulés.

https://perso.entrouvert.org/~fred/wcs-tracking-code.ogv

#19

Mis à jour par Pierre Cros il y a plus de 9 ans

Discussion avec Fred sur le fait que le bouton "supprimer le brouillon" est un peu en contradiction avec le côté automatique du truc. Du coup on peut envisager une suppression automatique.

Et puis la suppression manuelle se ferait dans la liste des brouillons (qui n'existe actuellement nulle part mais qui pourrait pour moi apparaître automatiquement sous les demandes en cours, y en aura jamais 12 des brouillons).

#20

Mis à jour par Victor Claudet il y a environ 9 ans

Dans la vidéo on voit bien l'enregistrement manuel. est-ce qu'on garde l'idée que dans le cas des formulaires multipages, le brouillon est enregistré automatiquement à la validation de la première page ?

Pierre Cros a écrit :

Discussion avec Fred sur le fait que le bouton "supprimer le brouillon" est un peu en contradiction avec le côté automatique du truc. Du coup on peut envisager une suppression automatique.

Et puis la suppression manuelle se ferait dans la liste des brouillons (qui n'existe actuellement nulle part mais qui pourrait pour moi apparaître automatiquement sous les demandes en cours, y en aura jamais 12 des brouillons).

Ça me va. Ou alors le bouton de suppression devrait plutôt se trouver dans le bloc au même endroit que l'enregistrement du brouillon.

#21

Mis à jour par Frédéric Péters il y a environ 9 ans

Victor Claudet a écrit :

Dans la vidéo on voit bien l'enregistrement manuel. est-ce qu'on garde l'idée que dans le cas des formulaires multipages, le brouillon est enregistré automatiquement à la validation de la première page ?

Oui, ce n'est pas sur la vidéo mais c'est le cas; https://perso.entrouvert.org/~fred/wcs-tracking-code-2.ogv

#22

Mis à jour par Frédéric Péters il y a environ 9 ans

J'ai poussé des modifications dans la branche pour ajouter l'envoi pour de vrai d'un email avec le code quand on le demande et pour faciliter le travail d'adaptation côté auquotidien, pour lequel j'attache un patch ici.

#23

Mis à jour par Frédéric Péters il y a environ 9 ans

Il me reste une question sur la manière dont ça doit pouvoir s'activer dans l'admin, pour le moment c'est dirigé par l'option de conservation de brouillons mais ça devrait peut-être être divisé en une option d'activation de "suivi par code de suivi" et une autre, pour la possibilité pour l'usager de conserver des demandes en cours de rédaction (l'actuelle option brouillon, qui activerait d'office le code de suivi)

#24

Mis à jour par Frédéric Péters il y a environ 9 ans

L'option de Pierre c'est d'activer le code de suivi, point. (il me corrigera si je résume trop).

Victor notait que ça pouvait peut-être poser des soucis avec certaines intégrations; pour cela on a la plateforme de recette (ou de dev) dans laquelle on peut charger les différents thèmes pour vérifier. Il y aurait d'autres problèmes à activer par défaut le code de suivi ?

Par ailleurs je pense que ça reste nécessaire au cas par cas de pouvoir le désactiver, pour des formulaires un peu technique comme on peut avoir "relier mon compte famille".

#25

Mis à jour par Pierre Cros il y a environ 9 ans

Le lundi 26 janvier 2015 à 15:40 +0100, a écrit :

L'option de Pierre c'est d'activer le code de suivi, point. (il me
corrigera si je résume trop).

En tout cas tant que code de suivi et brouillon sont indissociables. Si
on se retrouve avec des clients qui ne veulent pas du code de suivi, se
posera à mon sens la question de la dissociation.

#26

Mis à jour par Thomas Noël il y a environ 9 ans

Quelques remarques sur la relecture de la branche :

  • Code de suivi en consonnes majuscules seulement, sans chiffre, c'est pas très "CNIL" qui préfère un peu plus d'entropie, faudrait éventuellement que ça soit paramétrable (bof), ou par défaut ajouter au moins 23456789 (sans 1 et 0 qui peuvent être confondu avec des lettres)
  • J'aurai ajouté un mini CRC final pour que l'agent puisse dire "désolé ce code est invalide" au lieu de "il n'est pas dans la liste" en cas de mauvaise dictée (+ petite protection gratuite contre les attaques)
  • placeholder="ex: RPQDFVC" : plutôt "RPQDFVC" tout court, ou bien une possibilité de traduction de "ex: RPQDFVC"
  • dans backoffice/root.py et forms/backoffice.py: l'affichage du trackingcode dans les listings backoffice : je suis contre (a priori inutile, et "dangereux" par ailleurs, c'est un peu un mot de passe, autant éviter de l'afficher au maximum). Fred aussi, en fait.
  • c'est gênant d'afficher le code de suivi en clair et en permanence sur l'écran (lecture par dessus l'épaule...). Dans les nouvelles interfaces que je croise, on voit souvent un œil à coté des champs mot de passe, sur lequel on peut cliquer pour dire "afficher le mot de passe" (et on reclique sur l’œil pour le cacher à nouveau). Idée à reprendre ?
  • TrackingCode::get_new_id : j'aurais quand même fait un test de non existence de l'id généré

C'est tout pour l'instant

#27

Mis à jour par Victor Claudet il y a environ 9 ans

Thomas Noël a écrit :

  • Code de suivi en consonnes majuscules seulement, sans chiffre, c'est pas très "CNIL" qui préfère un peu plus d'entropie, faudrait éventuellement que ça soit paramétrable (bof), ou par défaut ajouter au moins 23456789 (sans 1 et 0 qui peuvent être confondu avec des lettres)

Juste une remarque là-dessus pour avoir lu la demande dans l'AO Meaux : un code composé uniquement de chiffres permet une saisie sur clavier téléphonique dans l'éventualité (un jour) d'un suivi de la demande via robot vocal.

EDIT : mais on est d'accord que c'est pas top niveau CNIL

#28

Mis à jour par Frédéric Péters il y a environ 9 ans

Thomas Noël a écrit :

  • Code de suivi en consonnes majuscules seulement, sans chiffre, c'est pas très "CNIL" qui préfère un peu plus d'entropie, faudrait éventuellement que ça soit paramétrable (bof), ou par défaut ajouter au moins 23456789 (sans 1 et 0 qui peuvent être confondu avec des lettres)

J'allais dire bof et m'appliquer mais je n'ai rien trouvé de concluant sur le site de la CNIL sur le sujet; donc je dis juste " bof".

  • J'aurai ajouté un mini CRC final pour que l'agent puisse dire "désolé ce code est invalide" au lieu de "il n'est pas dans la liste" en cas de mauvaise dictée (+ petite protection gratuite contre les attaques)

Ça roule. (1)

  • placeholder="ex: RPQDFVC" : plutôt "RPQDFVC" tout court, ou bien une possibilité de traduction de "ex: RPQDFVC"

Ok pour l'appel à gettext. (2)

  • dans backoffice/root.py et forms/backoffice.py: l'affichage du trackingcode dans les listings backoffice : je suis contre (a priori inutile, et "dangereux" par ailleurs, c'est un peu un mot de passe, autant éviter de l'afficher au maximum). Fred aussi, en fait.

Ouaip, supprimé. (3)

  • c'est gênant d'afficher le code de suivi en clair et en permanence sur l'écran (lecture par dessus l'épaule...). Dans les nouvelles interfaces que je croise, on voit souvent un œil à coté des champs mot de passe, sur lequel on peut cliquer pour dire "afficher le mot de passe" (et on reclique sur l’œil pour le cacher à nouveau). Idée à reprendre ?

Ça me chiffonne un peu, tu aurais des URL à me montrer ?

  • TrackingCode::get_new_id : j'aurais quand même fait un test de non existence de l'id généré

Il y a tests au moment du stockage.

~~

J'ai poussé les modifications (1, 2, 3) dans wip/tracking-code.

#29

Mis à jour par Thomas Noël il y a environ 9 ans

Frédéric Péters a écrit :

  • J'aurai ajouté un mini CRC final pour que l'agent puisse dire "désolé ce code est invalide" au lieu de "il n'est pas dans la liste" en cas de mauvaise dictée (+ petite protection gratuite contre les attaques)

Ça roule. (1)

Je suis en train de me dire que, bon, finalement, c'est un peu débile (y'a pas de secret ajouté, et en ajouter un sera pénible), et que ça va nous embêter le jour où on voudra rentre possible le changement des caractères possibles dans le code. J'entends ton soupir Fred, désolé...

  • c'est gênant d'afficher le code de suivi en clair et en permanence sur l'écran (lecture par dessus l'épaule...). Dans les nouvelles interfaces que je croise, on voit souvent un œil à coté des champs mot de passe, sur lequel on peut cliquer pour dire "afficher le mot de passe" (et on reclique sur l’œil pour le cacher à nouveau). Idée à reprendre ?

Ça me chiffonne un peu, tu aurais des URL à me montrer ?

Dans ma mémoire c'était sur des applis mobiles.

  • TrackingCode::get_new_id : j'aurais quand même fait un test de non existence de l'id généré

Il y a tests au moment du stockage.

Arf, j'avais raté ça, désolé.

#30

Mis à jour par Thomas Noël il y a environ 9 ans

Frédéric Péters a écrit :

Thomas Noël a écrit :

  • Code de suivi en consonnes majuscules seulement, sans chiffre, c'est pas très "CNIL" qui préfère un peu plus d'entropie, faudrait éventuellement que ça soit paramétrable (bof), ou par défaut ajouter au moins 23456789 (sans 1 et 0 qui peuvent être confondu avec des lettres)

J'allais dire bof et m'appliquer mais je n'ai rien trouvé de concluant sur le site de la CNIL sur le sujet; donc je dis juste " bof".

Je me basais sur les textes CNIL relatifs aux mots de passe (page 2 de http://www.cnil.fr/fileadmin/documents/Guides_pratiques/Guide_securite-VD.pdf ou page 50 de http://www.cnil.fr/fileadmin/documents/Guides_pratiques/CNIL_Guide_CollLocales.pdf, souvenirs de cg14 via Victor).

Gardons les consonnes majuscules uniquement pour l'instant, mais Victor demande qu'il y en ait 8 ;)

#31

Mis à jour par Frédéric Péters il y a environ 9 ans

Gardons les consonnes majuscules uniquement pour l'instant, mais Victor demande qu'il y en ait 8 ;)

Avec le code de vérification on arrivait à huit :/

#32

Mis à jour par Frédéric Péters il y a environ 9 ans

Je viens de repousser une branche avec la suppression de la somme de contrôle, et le nombre de caractères passés à 8.

#33

Mis à jour par Frédéric Péters il y a environ 9 ans

Et puis aussi la modification pour remplacer l'option "autoriser les brouillons" par une option "Prise en charge du code de suivi", active par défaut.

#34

Mis à jour par Frédéric Péters il y a environ 9 ans

  • Statut changé de En cours à Résolu (à déployer)

Voilà, les modifications de détails pourrait faire l'objet de nouveaux tickets.

commit 402e6f65fbeb325efaf765edd750f75344e283e9
Author: Frédéric Péters <fpeters@entrouvert.com>
Date:   Fri Jan 2 10:26:47 2015 +0100

    general: add tracking code object (#656)
#35

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

  • Statut changé de Résolu (à déployer) à Fermé

Formats disponibles : Atom PDF