diff options
Diffstat (limited to 'app/finders/container_repositories_finder.rb')
-rw-r--r-- | app/finders/container_repositories_finder.rb | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/app/finders/container_repositories_finder.rb b/app/finders/container_repositories_finder.rb index 34921df840b..5109efb361b 100644 --- a/app/finders/container_repositories_finder.rb +++ b/app/finders/container_repositories_finder.rb @@ -3,17 +3,18 @@ class ContainerRepositoriesFinder VALID_SUBJECTS = [Group, Project].freeze - def initialize(user:, subject:) + def initialize(user:, subject:, params: {}) @user = user @subject = subject + @params = params end def execute raise ArgumentError, "invalid subject_type" unless valid_subject_type? return unless authorized? - return project_repositories if @subject.is_a?(Project) - return group_repositories if @subject.is_a?(Group) + repositories = @subject.is_a?(Project) ? project_repositories : group_repositories + filter_by_image_name(repositories) end private @@ -32,6 +33,12 @@ class ContainerRepositoriesFinder ContainerRepository.for_group_and_its_subgroups(@subject) end + def filter_by_image_name(repositories) + return repositories unless @params[:name] + + repositories.search_by_name(@params[:name]) + end + def authorized? Ability.allowed?(@user, :read_container_image, @subject) end |