journalduhacker/app/controllers/invitations_controller.rb

93 lines
2.2 KiB
Ruby

class InvitationsController < ApplicationController
before_filter :require_logged_in_user,
:except => [ :build, :create_by_request, :confirm_email ]
def build
end
def index
@invitation_requests = InvitationRequest.where(:is_verified => true)
end
def confirm_email
if !(ir = InvitationRequest.where(:code => params[:code].to_s).first)
flash[:error] = "Invalid or expired invitation request"
return redirect_to "/invitations/request"
end
ir.is_verified = true
ir.save!
flash[:success] = "Your invitiation request has been validated and " <<
"will now be shown to other logged-in users."
return redirect_to "/invitations/request"
end
def create
i = Invitation.new
i.user_id = @user.id
i.email = params[:email]
i.memo = params[:memo]
begin
if i.save
i.send_email
flash[:success] = "Successfully e-mailed invitation to " <<
params[:email].to_s << "."
else
raise
end
rescue
flash[:error] = "Could not send invitation, verify the e-mail " <<
"address is valid."
end
if params[:return_home]
return redirect_to "/"
else
return redirect_to "/settings"
end
end
def create_by_request
ir = InvitationRequest.new
ir.name = params[:name]
ir.email = params[:email]
ir.memo = params[:memo]
ir.ip_address = request.remote_ip
if ir.save
flash[:success] = "You have been e-mailed a confirmation to " <<
params[:email].to_s << "."
return redirect_to "/invitations/request"
else
render :action => :build
end
end
def send_for_request
if !(ir = InvitationRequest.where(:code => params[:code].to_s).first)
flash[:error] = "Invalid or expired invitation request"
return redirect_to "/invitations"
end
if ir
i = Invitation.new
i.user_id = @user.id
i.email = ir.email
if i.save
i.send_email
ir.destroy
flash[:success] = "Successfully e-mailed invitation to " <<
ir.name.to_s << "."
end
return redirect_to "/invitations"
else
render :action => :build
end
end
end