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