From 1cb781ed95811b1403bbbc03f7cbfb6b76f382b9 Mon Sep 17 00:00:00 2001 From: "sylor_huang@126.com" Date: Wed, 25 Mar 2020 18:19:01 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E9=A1=B5=E7=9A=84=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/projects_controller.rb | 4 +++- app/queries/projects/list_query.rb | 9 ++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) 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]) From 098c520501321d4f97f81bde5553adee6a444128 Mon Sep 17 00:00:00 2001 From: "sylor_huang@126.com" Date: Wed, 25 Mar 2020 18:37:06 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E9=A1=B5=E7=9A=84=E5=B7=A6=E4=BE=A7=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/project_categories_controller.rb | 10 +++++++++- app/controllers/projects_controller.rb | 10 +++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/app/controllers/project_categories_controller.rb b/app/controllers/project_categories_controller.rb index a515e45b6..dcdc8ca7d 100644 --- a/app/controllers/project_categories_controller.rb +++ b/app/controllers/project_categories_controller.rb @@ -4,8 +4,16 @@ class ProjectCategoriesController < ApplicationController end def group_list + is_admin = current_user && current_user&.admin? + if is_admin + projects = Project.all + elsif current_user&.logged? + projects = Project.joins(:members).where.not("projects.is_public = ? and (projects.user_id != ? or members.user_id != ?)", false, current_user.id,current_user.id ) + else + projects = Project.visible + end @category_group_list = - Project.visible.joins(:project_category).group(:project_category_id) + projects.joins(:project_category).group(:project_category_id) .select("project_category_id, count(*) AS projects_count, project_categories.name") end end diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index e44ac026b..508af856c 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -38,7 +38,15 @@ class ProjectsController < ApplicationController end def group_type_list - @project_group_list = Project.visible.group(:project_type).select('project_type, count(project_type) AS projects_count').having("count(project_type) > ?", 0) + is_admin = current_user && current_user&.admin? + if is_admin + projects = Project.all + elsif current_user&.logged? + projects = Project.joins(:members).where.not("projects.is_public = ? and (projects.user_id != ? or members.user_id != ?)", false, current_user.id,current_user.id ) + else + projects = Project.visible + end + @project_group_list = projects.group(:project_type).select('project_type, count(project_type) AS projects_count').having("count(project_type) > ?", 0) end def update From 17f39ee5836113bf66cf104952fd852ad2540cb4 Mon Sep 17 00:00:00 2001 From: "sylor_huang@126.com" Date: Wed, 25 Mar 2020 18:44:07 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=95=B0=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/project_categories_controller.rb | 2 +- app/controllers/projects_controller.rb | 2 +- app/queries/projects/list_query.rb | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/controllers/project_categories_controller.rb b/app/controllers/project_categories_controller.rb index dcdc8ca7d..13f8056d8 100644 --- a/app/controllers/project_categories_controller.rb +++ b/app/controllers/project_categories_controller.rb @@ -8,7 +8,7 @@ class ProjectCategoriesController < ApplicationController if is_admin projects = Project.all elsif current_user&.logged? - projects = Project.joins(:members).where.not("projects.is_public = ? and (projects.user_id != ? or members.user_id != ?)", false, current_user.id,current_user.id ) + projects = Project.joins(:members).where.not("projects.is_public = ? and (projects.user_id != ? or members.user_id != ?)", false, current_user.id,current_user.id ).distinct else projects = Project.visible end diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index 508af856c..6417e42da 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -42,7 +42,7 @@ class ProjectsController < ApplicationController if is_admin projects = Project.all elsif current_user&.logged? - projects = Project.joins(:members).where.not("projects.is_public = ? and (projects.user_id != ? or members.user_id != ?)", false, current_user.id,current_user.id ) + projects = Project.joins(:members).where.not("projects.is_public = ? and (projects.user_id != ? or members.user_id != ?)", false, current_user.id,current_user.id ).distinct else projects = Project.visible end diff --git a/app/queries/projects/list_query.rb b/app/queries/projects/list_query.rb index c7189ee85..b5facb3a3 100644 --- a/app/queries/projects/list_query.rb +++ b/app/queries/projects/list_query.rb @@ -13,7 +13,7 @@ class Projects::ListQuery < ApplicationQuery 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 ) + 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 ).distinct else projects = Project.visible end