34 lines
1.1 KiB
Ruby
34 lines
1.1 KiB
Ruby
|
module Groups
|
||
|
class SharedProjectsController < Groups::ApplicationController
|
||
|
respond_to :json
|
||
|
before_action :group
|
||
|
skip_cross_project_access_check :index
|
||
|
|
||
|
def index
|
||
|
shared_projects = GroupProjectsFinder.new(
|
||
|
group: group,
|
||
|
current_user: current_user,
|
||
|
params: finder_params,
|
||
|
options: { only_shared: true }
|
||
|
).execute
|
||
|
serializer = GroupChildSerializer.new(current_user: current_user)
|
||
|
.with_pagination(request, response)
|
||
|
|
||
|
render json: serializer.represent(shared_projects)
|
||
|
end
|
||
|
|
||
|
private
|
||
|
|
||
|
def finder_params
|
||
|
@finder_params ||= begin
|
||
|
# Make the `search` param consistent for the frontend,
|
||
|
# which will be using `filter`.
|
||
|
params[:search] ||= params[:filter] if params[:filter]
|
||
|
# Don't show archived projects
|
||
|
params[:non_archived] = true
|
||
|
params.permit(:sort, :search, :non_archived)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|