User summary method is now more secure. Email change method prtects account SQL injec...
[selectricity-live] / app / controllers / account_controller.rb
index c9388f6f52c542fc7e6081556ccdb5ae661282a8..4b7fea9fc17451bdb11fde5be136ee7b022ccd1c 100644 (file)
@@ -1,3 +1,10 @@
+# Selectricity: Voting Machinery for the Masses
+# Copyright (C) 2007, 2008 Benjamin Mako Hill <mako@atdot.cc>
+# Copyright (C) 2007 Massachusetts Institute of Technology
+#
+# This program is free software. Please see the COPYING file for
+# details.
+
 class AccountController < ApplicationController
   layout 'main'
   
@@ -22,7 +29,7 @@ class AccountController < ApplicationController
         self.current_user.remember_me
         cookies[:auth_token] = { :value => self.current_user.remember_token , :expires => self.current_user.remember_token_expires_at }
       end
-      redirect_back_or_default(:controller => '/site', :action => 'index')
+      redirect_back_or_default :controller => 'front'
       flash[:notice] = "Logged in successfully"
     end
   end
@@ -36,7 +43,7 @@ class AccountController < ApplicationController
     return unless request.post?
     @user.save!
     self.current_user = @user
-    redirect_back_or_default(:controller => '/site', :action => 'index')
+    redirect_back_or_default :controller => 'front'
     flash[:notice] = "Thanks for signing up!"
   rescue ActiveRecord::RecordInvalid
     render :action => 'signup'
@@ -47,13 +54,32 @@ class AccountController < ApplicationController
     cookies.delete :auth_token
     reset_session
     flash[:notice] = "You have been logged out."
-    redirect_back_or_default(:controller => '/site', :action => 'index')
+    redirect_back_or_default :controller => 'front'
   end
   #======================================================================
   
-  #The following methods are for slectricity specific uses
+  #The following methods are for selectricity specific uses
   def summary
+    #@user = User.find(params[:id])
+    
+    #constrain the find command such that it only returns the user if it's the currently
+    #logged in user, otherwise, redirect to the front page
+    id = params[:id]
+    user_id = session[:user][:id]
+    @user = User.find(id, :conditions => ["id = ?", user_id])
+    
+    rescue
+      redirect_to :controller =>'front'
+    
+  end
+  
+  def change_contact
     @user = User.find(params[:id])
+    return unless request.post?
+    @user.email=params[:email]
+    @user.save!
+    flash[:notice] = "Email successfully updated"
+    render :action => 'summary'
   end
   
   

Benjamin Mako Hill || Want to submit a patch?