Adapt ability to allow create a proposal if cfp is open
This is necessary because the manage block does not cover it.
event.users.include?(user) is always false for :new and :create because
the event_users are not saved yet.
Introduced in 3e32c58
This commit is contained in:
parent
f4d41bd610
commit
08624c5b53
4 changed files with 36 additions and 29 deletions
|
|
@ -58,7 +58,7 @@ class Ability
|
|||
event.new_record?
|
||||
end
|
||||
|
||||
can [:new, :create], Event do |event|
|
||||
can :new, Event do |event|
|
||||
event.program.cfp_open? && event.new_record?
|
||||
end
|
||||
end
|
||||
|
|
@ -82,14 +82,19 @@ class Ability
|
|||
|
||||
can [:create, :destroy], Subscription, user_id: user.id
|
||||
|
||||
can :manage, Event do |event|
|
||||
can [:read, :update, :destroy], Event do |event|
|
||||
event.users.include?(user)
|
||||
end
|
||||
|
||||
# cannot create an event if program does not have open cfp
|
||||
cannot [:new, :create], Event do |event|
|
||||
user_inclusion = event.event_users.map { |event_user| event_user.user.id }.compact.include? user.id
|
||||
!event.program.cfp_open? || !event.new_record? || !user_inclusion
|
||||
can [:new], Event do |event|
|
||||
event.program.cfp_open? && event.new_record?
|
||||
end
|
||||
|
||||
can [:create], Event do |event|
|
||||
# event.users.include?(user) doesn't work here because the event_user object isn't saved when we call authorize!
|
||||
# Checks that only the current_user is in event_users
|
||||
user_inclusion = event.event_users.map { |event_user| event_user.user_id }.uniq - [ user.id ]
|
||||
user_inclusion.empty? && event.program.cfp_open? && event.new_record?
|
||||
end
|
||||
|
||||
# can manage the commercials of their own events
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue