diff --git a/app/controllers/payments_controller.rb b/app/controllers/payments_controller.rb index ae8c89da..6b7ac926 100644 --- a/app/controllers/payments_controller.rb +++ b/app/controllers/payments_controller.rb @@ -1,6 +1,6 @@ class PaymentsController < ApplicationController before_action :authenticate_user! - load_and_authorize_resource + load_and_authorize_resource except: :new load_resource :conference, find_by: :short_title authorize_resource :conference_registrations, class: Registration @@ -9,10 +9,8 @@ class PaymentsController < ApplicationController end def new + authorize! :new, Payment.new(conference_id: @conference.id) @total_amount_to_pay = Ticket.total_price(@conference, current_user, paid: false) - if @conference.end_date < Date.today - raise CanCan::AccessDenied.new("This conference has ended on #{@conference.end_date}!", :new, Payment) - end if @total_amount_to_pay.zero? raise CanCan::AccessDenied.new('Nothing to pay for!', :new, Payment) end diff --git a/app/models/ability.rb b/app/models/ability.rb index 18f9d4c4..04f56e51 100644 --- a/app/models/ability.rb +++ b/app/models/ability.rb @@ -73,6 +73,11 @@ class Ability can :index, Ticket can :manage, TicketPurchase, user_id: user.id can [:new, :create], Payment, user_id: user.id + + can :new, Payment do |payment| + payment.conference.end_date >= Date.today + end + can [:index, :show], PhysicalTicket, user: user can [:new, :create], Booth do |booth|