Flux du processus de vote

Créateur → Scrutateurs → Votants → Responsable / Système → Dépouillement

Créateur connecté
ScrutinsController::add
  • Crée un scrutin (statut = brouillon)
  • Crée les invitations pour les scrutateurs (phase de préparation)
  • Crée les invitations de vote (non encore envoyées)
  • Génère les clés des scrutateurs (méthode Shamir ou mot de passe)
Mail : scrutateurSetup()

Envoi d’un lien setupPassphrase aux scrutateurs pour configurer leur clé.

Scrutateurs
ScrutinsController::setupPassphrase
  • Vérifie l’invitation (type = scrutateur_setup)
  • Enregistre la clé ou le mot de passe du scrutateur
  • Marque l’invitation comme utilisée (invitation.used = 1)

Si tous les scrutateurs ont confirmé :

  • scrutin.status = ouvert
  • Génère les jetons de vote
  • Envoie les courriels voterLink() aux votants
Mail : voterLink()

Envoi du lien de vote aux votants.

Votants
ScrutinsController::vote
  • Vérifie que le scrutin est bien ouvert
  • Vérifie l’invitation de type vote
  • Chiffre le bulletin et l’enregistre sous forme de Bulletin
  • Marque l’invitation comme utilisée (invitation.used = 1)

Si tous les votants ont voté :

  • Envoi du courriel tousVotesRecus()

Le scrutin reste ouvert tant qu’il n’est pas clôturé.

Responsable / Système
ScrutinsController::close
  • Vérifie les conditions (fin du délai ou tous les votes reçus)
  • scrutin.status = fermé
  • Si mode Shamir : génère des invitations scrutateur_tally et envoie les courriels associés
Mode mot de passe ScrutinsController::tally
  • Les scrutateurs saisissent leur mot de passe
  • Les bulletins sont déchiffrés
  • Les résultats sont regroupés → RésultatsScrutin
  • Les Bulletins sont supprimés
  • scrutin.status = dépouillé

ScrutinsController::results

Affiche les résultats finaux du scrutin.

Mode Shamir ScrutinsController::tallyPassphrase
  • Chaque scrutateur fournit sa part de clé
  • Lorsque le seuil est atteint → shamirDepouillement() :
  • Combine les parts
  • Déchiffre les bulletins
  • Regroupe les résultats → RésultatsScrutin
  • Supprime les Bulletins
  • scrutin.status = dépouillé

ScrutinsController::results

Affiche les résultats finaux du scrutin.