Consultation, votez vos AG

Le problème exposé dans ce sujet a été résolu.

Bonjour les zéros !

le besoin

Comme vous savez, il est courant dans un projet de devoir prendre des décisions. Le mieux est donc de pouvoir voter, et ce de manière démocratique.

Pour discuter et arriver à une proposition, c’est extrêmement simple, on a les courriels, la messagerie instantanée. Mais le problème, c’est au moment de vote, et surtout pour comptabiliser les points. Et il manquait ce chaînon. On aurait put utiliser Loomio, mais il était un peu complexe à installer sur notre serveur. Il fallait donc quelque chose !

la réponse

on a donc crée un petit script, consultation. Le fonctionnement est simple : 6 choix de votes et la possibilité de dire pourquoi ce choix.

Pourquoi pas de système de comptes ou autres ? On voulait quelque chose le plus simple possible. Ne pas se compliquer la vie avec tel ou tel truc. On garde le minimum syndical.

6 choix de votes :

Je suis d’accord avec ça !

Je serais content que le groupe décide sans moi !

je pense qu'on peut faire mieux !

J’attends d’avoir plus d’information avant de me faire un avis.

Je suis indifférent à cette proposition.

J’ai de fortes objections avec cette proposition.

Avec un mode de calcul pour la validation de la réponse :

1
2
3
4
5
s’il y a ⅕ (20 %) de BLOCK, le vote est annulé et un nouveau débat est lancé ;
s’il y a ⅓ (33,3 %) de ABSTAIN, le vote est annulé et un nouveau débat est lancé ;
s’il y a ⅓ (33,3 %) de INDIFFERENT, le vote est annulé et un nouveau débat est lancé ;
s’il y a ⅖ (40 %) de WAITING, le vote est annulé et un nouveau débat est lancé ;
Si AGREE dépasse les 50 %, la proposition est adoptée ;

retour d’expérience

Le script semble fonctionner pour notre usage, objectif réussi. Si vous avez des suggestions, on prends !

Pour tester

+0 -0

Ton système a un gigantesque défaut de sécurité. La démocratie dans les AG c'est bien, quand n'importe qui a autant de voix qu'il le veut, ça ne me paraît pas ultra pertinent.

Il suffit de sortir un outil de test REST (comme Postman, mais il y en a plein) pour envoyer ce qu'on veut en moins de 2 minutes.


PS : mes tests étaient bourrins, donc visibles. Il suffit que quelqu'un s'en serve de manière subtile pour pourrir le vote. Ou au contraire de manière encore plus bourrine (attaque en boucle) pour rendre l'outil inutilisable, et ce sans le moindre effort.

La conséquence, c'est que tout vote qui a utilisé ce système est entaché des soupçon de fraude, puisqu'aucune protection n'existe.

Il y a plusieurs points à sécuriser :

  1. l'ID du sondage passé en GET : plutôt qu'un ID incrémental, mettre un token aléatoire. Ainsi, on peut difficilement arriver sur un sondage qui ne nous concerne pas.
  2. vérifier que l'on ne passe que l'un des 6 choix. Tout autre choix est ignoré.
  3. pour rendre robuste ce système (un vote = une personne physique), il faut à minima un système de renseignement et de validation d'email. Et encore, 1 email = 1 personne n'est pas vrai. On peut durcir un peu la chose en repérant le user agent, l'IP, etc. Mais cela ne reste toujours pas infaillible.
+3 -0

Oui et non : un truc qu'il est impératif de faire, c'est de mettre une protection contre les XSS et les CSRF (avec un token par exemple) qui suffisent à éviter qu'un quidam noie le système sous des réponses bidon. Il pourra y arriver, mais ce sera beaucoup plus difficile que simplement lancer Postman, et donc arrivera infiniment moins souvent.

La suite des protections dépend effectivement de la cible : est-ce que la confiance peut suffire, ou est-ce qu'il faut prévoir un moyen d'identification du votant ?

Ce que je fais :

  1. J'ai crée un champ email, avec un token ;
  2. Je l'envoie par mail, une adresse du genre : http://dev.localhost/democracy/?id=5&email=clem@zestedesavoir.com&token=c3aceafc364785eed6e7087c63c47093ca358077
  3. je vérifie si la personne à déjà voté.

Ça vous semble bon ?

Juste les emails renseignés au départ pourront voter.

+0 -0

Concernant

l'ID du sondage passé en GET : plutôt qu'un ID incrémental, mettre un token aléatoire. Ainsi, on peut difficilement arriver sur un sondage qui ne nous concerne pas.

Je dois donc crée un autre champ (genre id_sondage) ? Mais si les gens peuvent pas voter, ça pose un soucis de tomber sur un sondage qui nous concerne pas ?

+0 -0

Avec ton nouveau système, effectivement cela ne pose plus problème, puisque si l'on n'est pas sur la liste des "invités" d'un sondage, on ne peut pas voter. Par contre, s'il y a un texte de description lié au sondage, cela vaut quand même le coup qu'on ne puisse pas le lire.

Sinon, demande l'email avant l'affichage du sondage et les choix de vote.

+0 -0

Avec ton nouveau système, effectivement cela ne pose plus problème, puisque si l'on n'est pas sur la liste des "invités" d'un sondage, on ne peut pas voter. Par contre, s'il y a un texte de description lié au sondage, cela vaut quand même le coup qu'on ne puisse pas le lire.

Sinon, demande l'email avant l'affichage du sondage et les choix de vote.

elyppire

En sachant que tu peux avoir accès à la liste des sondages, je vois pas pourquoi je devrais cacher ceci. A la base, une instance = une organisation, et donc c'est normal d'avoir accès. La question est d'avoir accès en écriture ou en lecture :-). Je sais, c'est plus que simpliste, mais j'assume !

+0 -0

ne serait-il pas possible :

  • de pouvoir créer une liste d'e-mails à ajouter en un clic / une commande sur un vote, car je vois mal un président d'assoc se retaper les mails de tous les membres à chaque question
  • de ne pas nécessairement justifier sa réponse (je suis d'accord ne nécessite pas forcément de commentaires)
  • de remettre en débat la question si, par exemple, 50% des nommés pour voter ne l'ont pas fait (car je crois qu'il y a parfois des minimums de votants pour des décisions dans les assocs).

Voilà mes idées en vrac après un court test.

Pour les emails, je fais retenir avec un cookie. Pour la justification, c'est fait. Concernant le choix du calcul des résultats, c'est comme ça que ça marche dans le collectif, mais ça s'adapte ;)

EDIT : finalement, un lien avec une base64, plus facile à gérer ^^. exemple

+0 -0

Le consensus c'est pas la panacée quand même… Ça a pour gros défaut d'étouffer les dissidences. On oublie qu'elles existent alors qu'elle sont bel et bien là, malgré le silence imposé par le consensus pas toujours très consensuel du coup.

+1 -1
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte