mdipierro / evote

A system for secure, trusted, and verifiable voting on the web
Other
117 stars 41 forks source link

Admin UI for dealing with ballot email problems is very complicated. #3

Open kfogel opened 11 years ago

kfogel commented 11 years ago

In a recent election, we had 267 voter email address that the system sent ballot emails to. Most of the ballot emails reached their destinations, but ten of them did not (I sent a personal email to every voter to check; that's how we found out).

Below is the description of what I did to handle those ten emails. While this solution was not hard for me, that's only because I was somewhat familiar with the internals already. I think for a regular Election Admin, this would have been too difficult. It would better to have an admin UI where one enters the email address of each problem voter (one at a time or better yet in bulk) and is given a guided workflow to solving this common problem.

Here's what one does right now to solve this:


To handle those ten voters, I logged in to the admin console:

https://votingbooth.ourdomain.org/admin

Then I navigated to the DB query page of the "init" application DB. (I choice the "db.voter" view, to get a useful sample query to guide me.) That all brought me here:

https://votingbooth.ourdomain.org/init/appadmin/select/db

I generated a query using the email addresses of all the voters who had reported a problem. The query looked like this (but with real addresses, of course, and without the line breaks etc):

(db.voter.email=="address1@domain1.com")| \ (db.voter.email=="address2@domain2.com")| \ (db.voter.email=="address3@domain3.com")| \ (db.voter.email=="address4@domain4.com")| \ (db.voter.email=="address5@domain5.com")| \ (db.voter.email=="address6@domain6.com")| \ (db.voter.email=="address7@domain7.com")| \ (db.voter.email=="address8@domain8.com")| \ (db.voter.email=="address9@domain9.com")| \ (db.voter.email=="address10@domain10.com")

That gave me some results that looked correct, and contained the unique voter IDs. So I downloaded the CSV of the results, and (from my personal address) mailed each voter privately with an email like this:

Your ballot URL should be https://votingbooth.ourdomain.org/init/default/vote/4/voter-E52BB90AF0CE88A92E3009AFB0719B81 Please try voting, and let me know if you have any problems!

(The above is not a real voter ID, of course -- it's just a fake example.)

By the way, I tested this first by retrieving my own voter ID using the same method, constructing the URL, and going there and voting. It seemed to work fine, and I checked that the in-progress results page updated accordingly.