Commit f8f76fdb authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets

Merge pull request #5427 from karlhungus/feature_search_code_in_public_repos

Allow public repo searching
parents a10c08c4 b89d8497
...@@ -3,16 +3,7 @@ class SearchController < ApplicationController ...@@ -3,16 +3,7 @@ class SearchController < ApplicationController
project_id = params[:project_id] project_id = params[:project_id]
group_id = params[:group_id] group_id = params[:group_id]
project_ids = current_user.authorized_projects.map(&:id) project_ids = find_project_ids(group_id, project_id)
if group_id.present?
@group = Group.find(group_id)
group_project_ids = @group.projects.map(&:id)
project_ids.select! { |id| group_project_ids.include?(id)}
elsif project_id.present?
@project = Project.find(params[:project_id])
project_ids.select! { |id| id == project_id.to_i}
end
result = SearchContext.new(project_ids, current_user, params).execute result = SearchContext.new(project_ids, current_user, params).execute
...@@ -23,4 +14,20 @@ class SearchController < ApplicationController ...@@ -23,4 +14,20 @@ class SearchController < ApplicationController
@blobs = Kaminari.paginate_array(result[:blobs]).page(params[:page]).per(20) @blobs = Kaminari.paginate_array(result[:blobs]).page(params[:page]).per(20)
@total_results = @projects.count + @merge_requests.count + @issues.count + @wiki_pages.count + @blobs.total_count @total_results = @projects.count + @merge_requests.count + @issues.count + @wiki_pages.count + @blobs.total_count
end end
private
def find_project_ids(group_id, project_id)
project_ids = current_user.authorized_projects.map(&:id)
if group_id.present?
@group = Group.find(group_id)
group_project_ids = @group.projects.map(&:id)
project_ids.select! { |id| group_project_ids.include?(id) }
elsif project_id.present?
@project = Project.find(project_id)
project_ids = @project.public ? [@project.id] : project_ids.select { |id| id == project_id.to_i }
end
project_ids
end
end end
require 'spec_helper'
describe SearchController do
let(:project) { create(:project, public: true) }
let(:user) { create(:user) }
before do
sign_in(user)
end
describe '#find_project_ids' do
it 'should include public projects ids when searching within a single project' do
project_ids = controller.send(:find_project_ids,nil, project.id)
project_ids.size.should == 1
project_ids[0].should == project.id
end
end
end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment