Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion app/controllers/events_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -302,7 +302,7 @@ def team
@positions = Kaminari.paginate_array(@all_positions).page(params[:page]).per(params[:per] || @view == "list" ? 20 : 10)

if @event.parent
ops = @event.ancestor_organizer_positions.includes(:user)
ops = @event.ancestor_organizer_positions&.includes(:user)
users = ops.map(&:user).uniq

access_levels = users.filter_map do |user|
Expand Down
2 changes: 1 addition & 1 deletion app/helpers/sessions_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ def organizer_signed_in?(event = @event, as: :reader)
required_role_num = OrganizerPosition.roles[inner_as]
raise ArgumentError, "invalid role #{inner_as}" unless required_role_num.present?

valid_position = inner_event.ancestor_organizer_positions.find do |op|
valid_position = inner_event.ancestor_organizer_positions&.find do |op|
next false unless op.user == current_user

role_num = OrganizerPosition.roles[op.role]
Expand Down
6 changes: 3 additions & 3 deletions app/models/organizer_position.rb
Original file line number Diff line number Diff line change
Expand Up @@ -59,16 +59,16 @@ def self.role_at_least?(user, event, role)
return true if user&.admin?

if role.to_s == "reader"
return event.ancestor_organizer_positions.reader_access.where(user:).exists?
return event.ancestor_organizer_positions&.reader_access.where(user:).exists?
end

if role.to_s == "member"
# Only check direct organizer positions, unless the user is a manager of an ancestor
return event.organizer_positions.member_access.where(user:).exists? || event.ancestor_organizer_positions.manager_access.where(user:).exists?
return event.organizer_positions.member_access.where(user:).exists? || event.ancestor_organizer_positions&.manager_access.where(user:).exists?
end

if role.to_s == "manager"
return event.ancestor_organizer_positions.manager_access.where(user:).exists?
return event.ancestor_organizer_positions&.manager_access.where(user:).exists?
end

false
Expand Down
Loading