Salut à tous,
cela fait quelques temps que je travaille sur quelques améliorations de Formidable, dont j'ai besoin pour réaliser des formulaires de sondages.
J'ai remonté ici un problème que l'on avait dans l'authentification des utilisateurs.
Dans le cadre d'un formulaire à réponse unique, modifiable à volonté, je me suis rendu compte d'une limite de Formidable (RastaPopoulos, arrête-moi si je me trompe) :
afin de retrouver les précédentes réponses d'un utilisateur, on peut configurer le formulaire pour qu'il retrouve la personne soit :
- à partir d'un cookie
- à partir de son id_auteur
La première solution est simple parce qu'elle ne fait pas appel à la base de données et n'oblige pas l'utilisateur à obtenir un id_auteur. Mais si une personne change de poste pour retrouver ses réponses, le cookie étant différent, le formulaire apparaît comme vierge et bref, les données ne sont pas retrouvées.
La seconde solution est la plus fiable, étant donné qu'elle va rechercher l'id_auteur de l'utilisateur et recherche dans la base, la réponse correspondant à cet auteur.
Mais cette solution a une limite. On ne connaît pas l'id_auteur si l'utilisateur n'a aucun cookie du site SPIP et s'il ne s'est pas authentifié en passant dans l'espace privé, ou en remplissant le formulaire de connexion.
J'ai patché Formidable il y a quelques temps pour qu'il appelle des fonctions d'authentification ( auth_dist() ). Cela fonctionnait relativement bien, mais je me suis heurté à une nouvelle limite.
Un utilisateur n'étant pas enregistré dans SPIP ne possède pas d'id_auteur. Du coup, il est impossible de retrouver un utilisateur n'étant pas passé par l'espace privé, ou n'ayant pas rempli correctement le formulaire de login par son id_auteur. Les réponses ne peuvent donc plus être uniques et révisables.
Nos sites web se trouvent derrière une application SSO et le serveur fournit pas mal de variables (REMOTE_USER) permettant une authentification HTTP...
Nous voudrions ajouter l'authentification HTTP et remonter la contrib. Cela influerait sur ma précédente contrib (non commit) traitant sur les formulaires anonymes (supportant toujours les réponses uniques révisables).
Nous avons fait un patch quick-and-dirty de Formidable :
dans le cas d'un formulaire à authentification par cookie, si $_SERVER['REMOTE_USER'] est valué, c'est cette valeur (un login unique, donc) qui est utilisée et placée dans le champ 'cookie' de la table spip_formulaires_reponses. Pas top mais ça marche !
Questions :
- un tel type d'authentification a-t-il sa place comme contrib dans Formidable ?
- le comportement actuel (REMOTE_USER -> cookie) est-il satisfaisant et faut-il juste le documenter (je me doute de la réponse) ?
- faudrait-il plutôt créer un nouveau champ (type HTTP_auteur) dans la table spip_formulaires_reponses ?
- je me lance dans la modif ?
- ça a une chance d'être un jour remonté ?
--
Camille *Sauvage*