2012-07-01 20:31:31 +02:00
|
|
|
class InvitationsController < ApplicationController
|
2013-10-18 22:49:20 +02:00
|
|
|
before_filter :require_logged_in_user,
|
|
|
|
:except => [ :build, :create_by_request, :confirm_email ]
|
|
|
|
|
|
|
|
def build
|
2014-10-04 00:16:15 +02:00
|
|
|
if Rails.application.allow_invitation_requests?
|
|
|
|
@invitation_request = InvitationRequest.new
|
|
|
|
else
|
2016-11-24 11:52:54 +01:00
|
|
|
flash[:error] = I18n.t 'controllers.invitations_controller.flashpublicinvitnotallowed'
|
2014-10-04 00:16:15 +02:00
|
|
|
return redirect_to "/login"
|
|
|
|
end
|
2013-10-18 22:49:20 +02:00
|
|
|
end
|
|
|
|
|
|
|
|
def index
|
|
|
|
@invitation_requests = InvitationRequest.where(:is_verified => true)
|
|
|
|
end
|
|
|
|
|
|
|
|
def confirm_email
|
2013-12-24 04:20:06 +01:00
|
|
|
if !(ir = InvitationRequest.where(:code => params[:code].to_s).first)
|
2016-11-24 11:52:54 +01:00
|
|
|
flash[:error] = I18n.t 'controllers.invitations_controller.flashrequestconfirmation'
|
2013-10-18 22:49:20 +02:00
|
|
|
return redirect_to "/invitations/request"
|
|
|
|
end
|
|
|
|
|
|
|
|
ir.is_verified = true
|
|
|
|
ir.save!
|
|
|
|
|
2016-11-24 11:52:54 +01:00
|
|
|
flash[:success] = I18n.t 'controllers.invitations_controller.flashsuccessinvitrequest'
|
2013-10-18 22:49:20 +02:00
|
|
|
return redirect_to "/invitations/request"
|
|
|
|
end
|
2012-07-01 20:31:31 +02:00
|
|
|
|
|
|
|
def create
|
2016-05-15 20:19:47 +02:00
|
|
|
if !@user.can_invite?
|
2016-11-24 11:52:54 +01:00
|
|
|
flash[:error] = I18n.t 'controllers.invitations_controller.flashaccountnotinvit'
|
2016-05-15 20:19:47 +02:00
|
|
|
redirect_to "/settings"
|
|
|
|
return
|
|
|
|
end
|
|
|
|
|
2012-07-01 20:31:31 +02:00
|
|
|
i = Invitation.new
|
|
|
|
i.user_id = @user.id
|
|
|
|
i.email = params[:email]
|
|
|
|
i.memo = params[:memo]
|
2012-09-07 16:24:29 +02:00
|
|
|
|
|
|
|
begin
|
2014-02-19 20:11:44 +01:00
|
|
|
i.save!
|
|
|
|
i.send_email
|
2016-11-24 11:30:08 +01:00
|
|
|
flash[:success] = I18n.t 'controllers.invitations_controller.flashsuccessinvit', :guest => "#{params[:email].to_s}"
|
2012-09-07 16:24:29 +02:00
|
|
|
rescue
|
2016-11-24 11:52:54 +01:00
|
|
|
flash[:error] = I18n.t 'controllers.invitations_controller.flasherrorssinvit'
|
2012-07-01 20:31:31 +02:00
|
|
|
end
|
|
|
|
|
2013-02-22 21:52:22 +01:00
|
|
|
if params[:return_home]
|
|
|
|
return redirect_to "/"
|
|
|
|
else
|
|
|
|
return redirect_to "/settings"
|
|
|
|
end
|
2012-07-01 20:31:31 +02:00
|
|
|
end
|
2013-10-18 22:49:20 +02:00
|
|
|
|
|
|
|
def create_by_request
|
2014-10-04 00:16:15 +02:00
|
|
|
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
|
2016-11-24 11:52:54 +01:00
|
|
|
flash[:success] = I18n.t 'controllers.invitations_controller.flashrequestconfirmation', :email => "#{params[:invitation_request][:email].to_s}"
|
2014-10-04 00:16:15 +02:00
|
|
|
return redirect_to "/invitations/request"
|
|
|
|
else
|
|
|
|
render :action => :build
|
|
|
|
end
|
2013-10-18 22:49:20 +02:00
|
|
|
else
|
2014-10-04 00:16:15 +02:00
|
|
|
return redirect_to "/login"
|
2013-10-18 22:49:20 +02:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def send_for_request
|
2013-12-24 04:20:06 +01:00
|
|
|
if !(ir = InvitationRequest.where(:code => params[:code].to_s).first)
|
2016-11-24 11:52:54 +01:00
|
|
|
flash[:error] = I18n.t 'controllers.invitations_controller.flashinvalidinvitation'
|
2013-10-18 22:49:20 +02:00
|
|
|
return redirect_to "/invitations"
|
|
|
|
end
|
|
|
|
|
2014-02-19 20:11:44 +01:00
|
|
|
i = Invitation.new
|
|
|
|
i.user_id = @user.id
|
|
|
|
i.email = ir.email
|
|
|
|
|
|
|
|
i.save!
|
|
|
|
i.send_email
|
|
|
|
ir.destroy!
|
2016-11-24 11:52:54 +01:00
|
|
|
flash[:success] = I18n.t 'controllers.invitations_controller.flashsuccessinvit', :guest => "#{ir.name.to_s}"
|
2014-02-19 20:11:44 +01:00
|
|
|
return redirect_to "/invitations"
|
|
|
|
end
|
2013-10-18 22:49:20 +02:00
|
|
|
|
2014-02-19 20:13:10 +01:00
|
|
|
def delete_request
|
|
|
|
if !@user.is_moderator?
|
|
|
|
return redirect_to "/invitations"
|
|
|
|
end
|
|
|
|
|
|
|
|
if !(ir = InvitationRequest.where(:code => params[:code].to_s).first)
|
2016-11-24 11:52:54 +01:00
|
|
|
flash[:error] = I18n.t 'controllers.invitations_controller.flashrequestconfirmation'
|
2013-10-18 22:49:20 +02:00
|
|
|
return redirect_to "/invitations"
|
|
|
|
end
|
2014-02-19 20:13:10 +01:00
|
|
|
|
|
|
|
ir.destroy!
|
2016-11-24 11:52:54 +01:00
|
|
|
flash[:success] = I18n.t 'controllers.invitations_controller.flashsuccessdeleteinvit', :name => "#{ir.name.to_s}"
|
2014-02-19 20:13:10 +01:00
|
|
|
return redirect_to "/invitations"
|
2013-10-18 22:49:20 +02:00
|
|
|
end
|
2012-07-01 20:31:31 +02:00
|
|
|
end
|