journalduhacker/app/controllers/invitations_controller.rb
2016-11-24 11:52:54 +01:00

108 lines
3.1 KiB
Ruby

class InvitationsController < ApplicationController
before_filter :require_logged_in_user,
:except => [ :build, :create_by_request, :confirm_email ]
def build
if Rails.application.allow_invitation_requests?
@invitation_request = InvitationRequest.new
else
flash[:error] = I18n.t 'controllers.invitations_controller.flashpublicinvitnotallowed'
return redirect_to "/login"
end
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] = I18n.t 'controllers.invitations_controller.flashrequestconfirmation'
return redirect_to "/invitations/request"
end
ir.is_verified = true
ir.save!
flash[:success] = I18n.t 'controllers.invitations_controller.flashsuccessinvitrequest'
return redirect_to "/invitations/request"
end
def create
if !@user.can_invite?
flash[:error] = I18n.t 'controllers.invitations_controller.flashaccountnotinvit'
redirect_to "/settings"
return
end
i = Invitation.new
i.user_id = @user.id
i.email = params[:email]
i.memo = params[:memo]
begin
i.save!
i.send_email
flash[:success] = I18n.t 'controllers.invitations_controller.flashsuccessinvit', :guest => "#{params[:email].to_s}"
rescue
flash[:error] = I18n.t 'controllers.invitations_controller.flasherrorssinvit'
end
if params[:return_home]
return redirect_to "/"
else
return redirect_to "/settings"
end
end
def create_by_request
if Rails.application.allow_invitation_requests?
@invitation_request = InvitationRequest.new(
params.require(:invitation_request).permit(:name, :email, :memo))
@invitation_request.ip_address = request.remote_ip
if @invitation_request.save
flash[:success] = I18n.t 'controllers.invitations_controller.flashrequestconfirmation', :email => "#{params[:invitation_request][:email].to_s}"
return redirect_to "/invitations/request"
else
render :action => :build
end
else
return redirect_to "/login"
end
end
def send_for_request
if !(ir = InvitationRequest.where(:code => params[:code].to_s).first)
flash[:error] = I18n.t 'controllers.invitations_controller.flashinvalidinvitation'
return redirect_to "/invitations"
end
i = Invitation.new
i.user_id = @user.id
i.email = ir.email
i.save!
i.send_email
ir.destroy!
flash[:success] = I18n.t 'controllers.invitations_controller.flashsuccessinvit', :guest => "#{ir.name.to_s}"
return redirect_to "/invitations"
end
def delete_request
if !@user.is_moderator?
return redirect_to "/invitations"
end
if !(ir = InvitationRequest.where(:code => params[:code].to_s).first)
flash[:error] = I18n.t 'controllers.invitations_controller.flashrequestconfirmation'
return redirect_to "/invitations"
end
ir.destroy!
flash[:success] = I18n.t 'controllers.invitations_controller.flashsuccessdeleteinvit', :name => "#{ir.name.to_s}"
return redirect_to "/invitations"
end
end