Development #656
Accès aux formulaires via un "code de suivi"
0%
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).
Files
Related issues
Associated revisions
general: add tracking code object (#656)
History
Updated by Frédéric Péters over 11 years ago
- Status changed from Nouveau to 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.
Updated by Thomas Noël over 11 years ago
- 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.
Updated by Thomas Noël about 11 years ago
proposition de patch qui ajoute un formdata.tracking_code
Updated by Thomas Noël about 11 years ago
- File wcs-trackingcode-session.diff wcs-trackingcode-session.diff added
- Status changed from Solution déployée to En cours
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
Updated by Thomas Noël about 11 years ago
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 :- envoi d'un formulaire en anonyme puis accès + actions de workflow via tracking code en anonyme
- envoi d'un formulaire en anonyme puis accès + actions de workflow via tracking code en étant connecté sous user "X"
- l'inverse : envoi d'un formulaire en tant que user "X" puis accès + actions de workflow via tracking code en anonyme
- 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"
Updated by Thomas Noël over 10 years ago
- Target version changed from Au-quotidien 2012.3 to Au-quotidien 2014.5
Updated by Frédéric Péters over 8 years ago
- Patch proposed set to No
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.
Updated by Frédéric Péters over 8 years ago
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>).
Updated by Thomas Noël over 8 years ago
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).
Updated by Thomas Noël over 8 years ago
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.
Updated by Pierre Cros over 8 years ago
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.
Updated by Victor Claudet over 8 years ago
Une ébauche de mockup suite aux échanges: https://dev.entrouvert.org/projects/combo/wiki/Mockup_ticket_de_suivi
Updated by Frédéric Péters over 8 years ago
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).
Updated by Thomas Noël over 8 years ago
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.
Updated by Frédéric Péters over 8 years ago
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).
Updated by Frédéric Péters over 8 years ago
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.
Updated by Pierre Cros over 8 years ago
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).
Updated by Victor Claudet over 8 years ago
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.
Updated by Frédéric Péters over 8 years ago
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
Updated by Frédéric Péters over 8 years ago
- File 0002-display-tracking-code-and-steps-in-side-column.patch 0002-display-tracking-code-and-steps-in-side-column.patch added
- Patch proposed changed from No to Yes
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.
Updated by Frédéric Péters over 8 years ago
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)
Updated by Frédéric Péters over 8 years ago
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".
Updated by Pierre Cros over 8 years ago
Le lundi 26 janvier 2015 à 15:40 +0100, redmine@entrouvert.com 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.
Updated by Thomas Noël over 8 years ago
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
Updated by Victor Claudet over 8 years ago
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
Updated by Frédéric Péters over 8 years ago
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.
Updated by Thomas Noël over 8 years ago
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é.
Updated by Thomas Noël over 8 years ago
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 ;)
Updated by Frédéric Péters over 8 years ago
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 :/
Updated by Frédéric Péters over 8 years ago
Je viens de repousser une branche avec la suppression de la somme de contrôle, et le nombre de caractères passés à 8.
Updated by Frédéric Péters over 8 years ago
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.
Updated by Frédéric Péters over 8 years ago
- Status changed from En cours to 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)
general: add tracking code object (#656)