diff options
Diffstat (limited to 'app/finders/autocomplete/users_finder.rb')
-rw-r--r-- | app/finders/autocomplete/users_finder.rb | 19 |
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') |