Commit 91c7b266cdffbd82ac70f35ca9bd5d08b989dbe3
Committed by
Izaak Alpert
1 parent
c946defb
Exists in
spb-stable
and in
3 other branches
Allow public repo searching
GITLAB-1386 Change-Id: I9a0bbe8db1a9bb00cef33b3e1854d78844b70a45
Showing
2 changed files
with
33 additions
and
10 deletions
Show diff stats
app/controllers/search_controller.rb
@@ -3,16 +3,7 @@ class SearchController < ApplicationController | @@ -3,16 +3,7 @@ class SearchController < ApplicationController | ||
3 | project_id = params[:project_id] | 3 | project_id = params[:project_id] |
4 | group_id = params[:group_id] | 4 | group_id = params[:group_id] |
5 | 5 | ||
6 | - project_ids = current_user.authorized_projects.map(&:id) | ||
7 | - | ||
8 | - if group_id.present? | ||
9 | - @group = Group.find(group_id) | ||
10 | - group_project_ids = @group.projects.map(&:id) | ||
11 | - project_ids.select! { |id| group_project_ids.include?(id)} | ||
12 | - elsif project_id.present? | ||
13 | - @project = Project.find(params[:project_id]) | ||
14 | - project_ids.select! { |id| id == project_id.to_i} | ||
15 | - end | 6 | + project_ids = find_project_ids(group_id, project_id) |
16 | 7 | ||
17 | result = SearchContext.new(project_ids, params).execute | 8 | result = SearchContext.new(project_ids, params).execute |
18 | 9 | ||
@@ -23,4 +14,18 @@ class SearchController < ApplicationController | @@ -23,4 +14,18 @@ class SearchController < ApplicationController | ||
23 | @blobs = Kaminari.paginate_array(result[:blobs]).page(params[:page]).per(20) | 14 | @blobs = Kaminari.paginate_array(result[:blobs]).page(params[:page]).per(20) |
24 | @total_results = @projects.count + @merge_requests.count + @issues.count + @wiki_pages.count + @blobs.total_count | 15 | @total_results = @projects.count + @merge_requests.count + @issues.count + @wiki_pages.count + @blobs.total_count |
25 | end | 16 | end |
17 | + | ||
18 | + def find_project_ids(group_id, project_id) | ||
19 | + project_ids = current_user.authorized_projects.map(&:id) | ||
20 | + | ||
21 | + if group_id.present? | ||
22 | + @group = Group.find(group_id) | ||
23 | + group_project_ids = @group.projects.map(&:id) | ||
24 | + project_ids.select! { |id| group_project_ids.include?(id) } | ||
25 | + elsif project_id.present? | ||
26 | + @project = Project.find(project_id) | ||
27 | + project_ids = @project.public ? [@project.id] : project_ids.select { |id| id == project_id.to_i } | ||
28 | + end | ||
29 | + project_ids | ||
30 | + end | ||
26 | end | 31 | end |
@@ -0,0 +1,18 @@ | @@ -0,0 +1,18 @@ | ||
1 | +require 'spec_helper' | ||
2 | + | ||
3 | +describe SearchController do | ||
4 | + let(:project) { create(:project, public: true) } | ||
5 | + let(:user) { create(:user) } | ||
6 | + | ||
7 | + before do | ||
8 | + sign_in(user) | ||
9 | + end | ||
10 | + | ||
11 | + describe '#find_project_ids' do | ||
12 | + it 'should include public projects ids when searching within a single project' do | ||
13 | + project_ids = controller.find_project_ids(nil, project.id) | ||
14 | + project_ids.size.should == 1 | ||
15 | + project_ids[0].should == project.id | ||
16 | + end | ||
17 | + end | ||
18 | +end |