java-topology/defects/redmine/patch/redmine-0003-user-project_ids-include.patch

18 lines
866 B
Diff

# UNDF: UNDF-2026-000000878
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -700,9 +700,10 @@
members = Member.joins(:project, :member_roles).
where("#{Project.table_name}.status <> 9").
where("#{Member.table_name}.user_id = ? OR (#{Project.table_name}.is_public = ? AND #{Member.table_name}.user_id = ?)", self.id, true, group_id).
pluck(:user_id, :role_id, :project_id)
+ project_ids_set = project_ids.to_set # O(1) lookup instead of O(P) Array#include?
hash = {}
members.each do |user_id, role_id, project_id|
# Ignore the roles of the builtin group if the user is a member of the project
- next if user_id != id && project_ids.include?(project_id)
+ next if user_id != id && project_ids_set.include?(project_id)
hash[role_id] ||= []
hash[role_id] << project_id