From 2ee3731fd7cc776524f44005a99035d01168e6c0 Mon Sep 17 00:00:00 2001 From: Date: Fri, 31 Aug 2007 15:20:21 -0400 Subject: [PATCH] Added the forgot password functionality to the voters of Full Elections. Also, modified the votestart e-mail to reflect the new Selectricity home (selectricity.org). --- app/controllers/election_controller.rb | 8 ++++++++ app/controllers/voter_controller.rb | 2 +- app/models/voter_notify.rb | 7 ++++++- app/views/election/remind_voter.rhtml | 1 + app/views/voter/forgot_password.rhtml | 12 ++++++++++++ app/views/voter_notify/reminder.rhtml | 17 +++++++++++++++++ app/views/voter_notify/votestart.rhtml | 11 +++++------ config/environment.rb | 2 +- db/schema.rb | 8 ++++++++ 9 files changed, 59 insertions(+), 9 deletions(-) create mode 100644 app/views/election/remind_voter.rhtml create mode 100644 app/views/voter/forgot_password.rhtml create mode 100644 app/views/voter_notify/reminder.rhtml diff --git a/app/controllers/election_controller.rb b/app/controllers/election_controller.rb index eff920f..1affe0f 100644 --- a/app/controllers/election_controller.rb +++ b/app/controllers/election_controller.rb @@ -152,6 +152,14 @@ class ElectionController < ApplicationController voter.destroy end + def remind_voter + voter_array= FullVoter.find(:all, :conditions => ["email = ?", params[:email]]) + voter_array.delete_if {|voter| voter.election.active == 0} + unless voter_array.empty? + VoterNotify.deliver_reminder(voter_array) + end + end + ## methods for computing and printing results #################################################################### def results diff --git a/app/controllers/voter_controller.rb b/app/controllers/voter_controller.rb index 6693b0f..fb1bec7 100644 --- a/app/controllers/voter_controller.rb +++ b/app/controllers/voter_controller.rb @@ -32,7 +32,7 @@ class VoterController < ApplicationController redirect_to :action => 'index' end end - + private def authenticate password = params[:id] diff --git a/app/models/voter_notify.rb b/app/models/voter_notify.rb index d9fded5..825786a 100644 --- a/app/models/voter_notify.rb +++ b/app/models/voter_notify.rb @@ -8,7 +8,12 @@ class VoterNotify < ActionMailer::Base @body = { :voter => voter } end - def reminder(voter) + def reminder(voter_array) + @subject = "Selectricity Election Reminder!" + @recipients = voter_array[0].email + @from = MAIL_CONFIG[:from] + @sent_on = Time.now + @body = { :voter_array => voter_array } end end diff --git a/app/views/election/remind_voter.rhtml b/app/views/election/remind_voter.rhtml new file mode 100644 index 0000000..40d7a20 --- /dev/null +++ b/app/views/election/remind_voter.rhtml @@ -0,0 +1 @@ +The message has been sent, please check your inbox soon. \ No newline at end of file diff --git a/app/views/voter/forgot_password.rhtml b/app/views/voter/forgot_password.rhtml new file mode 100644 index 0000000..43d1d03 --- /dev/null +++ b/app/views/voter/forgot_password.rhtml @@ -0,0 +1,12 @@ +

Deleted your email? Lost your password?

+

Not to worry, enter the email at which you were supposed to receive your +password, and we'll hook you up with a set of magic numbers that shall grant +access to the chambers within. Hoo-rah!

+ +<% form_tag :controller => 'election', :action => 'remind_voter' do %> + +

Email + <%= text_field_tag :email %>

+ + <%= submit_tag "Submit" %> +<% end -%> diff --git a/app/views/voter_notify/reminder.rhtml b/app/views/voter_notify/reminder.rhtml new file mode 100644 index 0000000..1373bc2 --- /dev/null +++ b/app/views/voter_notify/reminder.rhtml @@ -0,0 +1,17 @@ +Voter! + +Either you or an election administrator has requested you receive a reminder for an election you've been registered in. + +Here are the election(s) for which you are currently registered and your tokens to enter each election: +<% @voter_array.each do |voter| -%> +<%= voter.election.name %>: <%= voter.password %> +<% end -%> + + +If you feel there is a technical error, please contact: + + help@selectricity.org + (Selectricity Tech Support) + +Thanks and happy voting! +Selectricity Staff diff --git a/app/views/voter_notify/votestart.rhtml b/app/views/voter_notify/votestart.rhtml index 216ddeb..f9dbfc6 100644 --- a/app/views/voter_notify/votestart.rhtml +++ b/app/views/voter_notify/votestart.rhtml @@ -1,17 +1,17 @@ Voter! -This is an automated message sent by selectricity.media.mit.edu. +This is an automated message sent by Selectricity. You have been listed as a voter in an upcoming election. The election title: <%= @voter.election.name %> To read more about the election, the candidates, and to vote, you will -need to use the following token to log in to selectricity.media.mit.edu: +need to use the following token to log in to Selectricity: <%= @voter.password %> Alternatively, you can just click this URL: - http://selectricity.media.mit.edu<%= url_for :controller => 'election', :action => 'show', :id => @voter.election %> + http://selectricity.org<%= url_for :controller => 'voter' %> If you have any questions or if you feel you have received this message in error, you should contact: @@ -21,10 +21,9 @@ in error, you should contact: Alternatively, if you feel there is a technical error, please contact: - help@selectricity.media.mit.edu + help@selectricity.org (Selectricity Tech Support) Thanks and happy voting! Selectricity Staff - - + diff --git a/config/environment.rb b/config/environment.rb index ccd9ad0..3e5f1c6 100644 --- a/config/environment.rb +++ b/config/environment.rb @@ -59,7 +59,7 @@ end # Include your application configuration below -MAIL_CONFIG = { :from => 'Selectricity '} +MAIL_CONFIG = { :from => 'Selectricity '} require 'uniq_token' require 'randarray' diff --git a/db/schema.rb b/db/schema.rb index 6c038de..e7d7d85 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -42,6 +42,14 @@ ActiveRecord::Schema.define() do t.column "rank", :integer end + create_table "sessions", :force => true do |t| + t.column "sessid", :string + t.column "data", :text + t.column "updated_at", :datetime + end + + add_index "sessions", ["sessid"], :name => "session_index" + create_table "sitealizer", :force => true do |t| t.column "path", :string t.column "ip", :string -- 2.30.2