Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app/finders/autocomplete/users_finder.rb')
-rw-r--r--app/finders/autocomplete/users_finder.rb19
1 files changed, 12 insertions, 7 deletions
diff --git a/app/finders/autocomplete/users_finder.rb b/app/finders/autocomplete/users_finder.rb
index 7ecf5c98ac0..e7a24cde2bd 100644
--- a/app/finders/autocomplete/users_finder.rb
+++ b/app/finders/autocomplete/users_finder.rb
@@ -10,21 +10,21 @@ module Autocomplete
# ensure good performance.
LIMIT = 20
- attr_reader :current_user, :project, :group, :search, :skip_users,
+ attr_reader :current_user, :project, :group, :search,
:author_id, :todo_filter, :todo_state_filter,
- :filter_by_current_user, :states
+ :filter_by_current_user, :states, :push_code
def initialize(params:, current_user:, project:, group:)
@current_user = current_user
@project = project
@group = group
@search = params[:search]
- @skip_users = params[:skip_users]
@author_id = params[:author_id]
@todo_filter = params[:todo_filter]
@todo_state_filter = params[:todo_state_filter]
@filter_by_current_user = params[:current_user]
@states = params[:states] || ['active']
+ @push_code = params[:push_code]
end
def execute
@@ -39,6 +39,8 @@ module Autocomplete
end
end
+ items = filter_users_by_push_ability(items)
+
items.uniq.tap do |unique_items|
preload_associations(unique_items)
end
@@ -65,7 +67,6 @@ module Autocomplete
.non_internal
.reorder_by_name
.optionally_search(search, use_minimum_char_limit: use_minimum_char_limit)
- .where_not_in(skip_users)
.limit_to_todo_authors(
user: current_user,
with_todos: todo_filter,
@@ -88,7 +89,7 @@ module Autocomplete
if project
project.authorized_users.union_with_user(author_id)
elsif group
- group.users_with_parents
+ ::Autocomplete::GroupUsersFinder.new(group: group).execute # rubocop: disable CodeReuse/Finder
elsif current_user
User.all
else
@@ -96,6 +97,12 @@ module Autocomplete
end
end
+ def filter_users_by_push_ability(items)
+ return items unless project && push_code.present?
+
+ items.select { |user| user.can?(:push_code, project) }
+ end
+
# rubocop: disable CodeReuse/ActiveRecord
def preload_associations(items)
ActiveRecord::Associations::Preloader.new(records: items, associations: :status).call
@@ -109,5 +116,3 @@ module Autocomplete
end
end
end
-
-Autocomplete::UsersFinder.prepend_mod_with('Autocomplete::UsersFinder')