This commit is contained in:
Charlie Quinn 2017-01-19 10:28:18 +00:00 committed by GitHub
commit 093acfe697
3 changed files with 78 additions and 46 deletions

View file

@ -1,6 +1,7 @@
class ConferenceRegistrationsController < ApplicationController
before_filter :authenticate_user!, except: [:new, :create]
before_action :authenticate_user!, unless: :allow_guests?
load_resource :conference, find_by: :short_title
before_action :user_already_registered, only: :new
authorize_resource :conference_registrations, class: Registration, except: [:new, :create]
before_action :set_registration, only: [:edit, :update, :destroy, :show]
@ -8,21 +9,6 @@ class ConferenceRegistrationsController < ApplicationController
@registration = Registration.new(conference_id: @conference.id)
authorize! :new, @registration, message: "Sorry, you can not register for #{@conference.title}. Registration limit exceeded or the registration is not open."
# Redirect to registration edit when user is already registered
if @conference.user_registered?(current_user)
redirect_to edit_conference_conference_registration_path(@conference.short_title)
return
# ichain does not allow us to create users during registration
elsif (ENV['OSEM_ICHAIN_ENABLED'] == 'true') && !current_user
redirect_to root_path, alert: 'You need to sign in or sign up before continuing.'
return
end
# avoid openid sign_in to redirect to register/new when the sign_in user had already a registration
if current_user && @conference.user_registered?(current_user)
redirect_to edit_conference_conference_registration_path(@conference.short_title)
end
# @user variable needs to be set so that _sign_up_form_embedded works properly
@user = @registration.build_user
end
@ -96,6 +82,18 @@ class ConferenceRegistrationsController < ApplicationController
protected
def allow_guests?
ENV['OSEM_ICHAIN_ENABLED'] != 'true' && params[:action].in?(['new', 'create'])
end
def user_already_registered
# Redirect to registration edit when user is already registered
if @conference.user_registered?(current_user)
redirect_to edit_conference_conference_registration_path(@conference.short_title)
return
end
end
def set_registration
@registration = Registration.find_by(conference: @conference, user: current_user)
unless @registration

View file

@ -45,16 +45,17 @@ class Ability
# can view Commercials of confirmed Events
can :show, Commercial, commercialable_type: 'Event', commercialable_id: Event.where(state: 'confirmed').pluck(:id)
can [:show, :create], User
can [:new, :create], Registration do |registration|
conference = registration.conference
conference.registration_open? && registration.new_record? && !conference.registration_limit_exceeded?
end
unless ENV['OSEM_ICHAIN_ENABLED'] == 'true'
can :show, Registration do |registration|
registration.new_record?
end
can [:new, :create], Registration do |registration|
conference = registration.conference
conference.registration_open? && registration.new_record? && !conference.registration_limit_exceeded?
end
can :show, Event do |event|
event.new_record?
end
@ -74,11 +75,6 @@ class Ability
can :manage, Registration, user_id: user.id
can [:new, :create], Registration do |registration|
conference = registration.conference
conference.registration_open? && !conference.registration_limit_exceeded?
end
can :index, Ticket
can :manage, TicketPurchase, user_id: user.id
can [:new, :create], Payment, user_id: user.id