require 'digest/sha1' class Account::InController < ApplicationController # If you want "remember me" functionality, add this before_filter to Application Controller # before_filter :login_from_cookie # say something nice, you goof! something sweet. def index redirect_to(:action => 'signup') unless logged_in? || User.count > 0 end def login return unless request.post? self.current_user = User.authenticate(params[:login], params[:password]) if logged_in? if params[:remember_me] == "1" 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 => '/account/contests') flash[:notice] = "Logged in successfully" else flash[:notice] = "Invalid login information." end end def forget return unless request.post? user = User.find_by_email(params[:email]) if user.nil? flash[:notice] = 'This e-mail is not registered in our database.' else password = Digest::SHA1.hexdigest(rand.to_s)[1..6] user.encrypt(password) user.save! flash[:notice] = 'A new password was sent to your e-mail address.' # flash[:notice] = password redirect_back_or_default(:controller => '/account/in', :action => 'login') end end def signup params[:user]['login'] = params[:user]['email'] if params[:user] @user = User.new(params[:user]) return unless request.post? if simple_captcha_valid? @user.save! self.current_user = @user redirect_to (:controller => '/account/start', :action => 'contests') # redirect_back_or_default(:controller => '/account/in', :action => 'verify') flash[:notice] = "Thanks for signing up!" else flash[:notice] = 'You must enter the text as it appears on the image, please try again. ' render :action => 'signup' end rescue ActiveRecord::RecordInvalid flash[:notice] = @user.errors.full_messages.join('
* ') render :action => 'signup' end def logout self.current_user.forget_me if logged_in? cookies.delete :auth_token reset_session flash[:notice] = "You have been logged out." # redirect_back_or_default(:controller => '/account/in', :action => 'login') redirect_back_or_default(:controller => '/') end def verify end def activate @user = User.find_by_activation_code(params[:id]) if @user and @user.activate self.current_user = @user redirect_back_or_default(:controller => '/account/contests') flash[:notice] = "Your account has been activated." end end end