diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index 9f67456d9..e44ac026b 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -6,7 +6,9 @@ class ProjectsController < ApplicationController before_action :authorizate_user_can_edit_project!, only: %i[update] def index - scope = Projects::ListQuery.call(params) + is_admin = current_user && current_user&.admin? + + scope = Projects::ListQuery.call(params.merge(is_admin: is_admin)) @total_count = scope.size @projects = paginate(scope) end diff --git a/app/queries/projects/list_query.rb b/app/queries/projects/list_query.rb index 081e99270..c7189ee85 100644 --- a/app/queries/projects/list_query.rb +++ b/app/queries/projects/list_query.rb @@ -10,7 +10,14 @@ class Projects::ListQuery < ApplicationQuery end def call - scope = Project.visible.like(params[:search]) + if params[:is_admin] + projects = Project.all + elsif params[:user_id].to_i != 2 + projects = Project.joins(:members).where.not("projects.is_public = ? and (projects.user_id != ? or members.user_id != ?)", false, params[:user_id].to_i,params[:user_id].to_i ) + else + projects = Project.visible + end + scope = projects.like(params[:search]) .with_project_type(params[:project_type]) .with_project_category(params[:category_id]) .with_project_language(params[:language_id])