From 0fc705fcde046318feea5f70704cf1aa3fbe3824 Mon Sep 17 00:00:00 2001 From: yystopf Date: Fri, 24 Mar 2023 10:56:17 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=E4=B8=AA?= =?UTF-8?q?=E4=BA=BA=E4=B8=BB=E9=A1=B5=E9=A1=B9=E7=9B=AE=E6=96=B0=E5=A2=9E?= =?UTF-8?q?admin=E6=9F=A5=E8=AF=A2=E6=88=91=E7=AE=A1=E7=90=86=E7=9A=84?= =?UTF-8?q?=E4=BB=93=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/queries/projects/list_my_query.rb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/queries/projects/list_my_query.rb b/app/queries/projects/list_my_query.rb index bc0cda1a2..510ecf9fd 100644 --- a/app/queries/projects/list_my_query.rb +++ b/app/queries/projects/list_my_query.rb @@ -34,6 +34,10 @@ class Projects::ListMyQuery < ApplicationQuery elsif params[:category].to_s == "forked" #我fork的 fork_ids = user.fork_users.select(:id, :fork_project_id).pluck(:fork_project_id) projects = projects.where(id: fork_ids) + elsif params[:category].to_s == "admin" + normal_projects = projects.joins(members: :roles).where(members: {user_id: user.id}, roles: {name: %w(Manager)}).to_sql + org_projects = projects.joins(team_projects: [team: :team_users]).where(teams: {authorize: "owner"},team_users: {user_id: user.id}).to_sql + projects = Project.from("( #{ normal_projects} UNION #{ org_projects } ) AS projects").distinct # elsif params[:category].to_s == "public" # projects = projects.visible.joins(:members).where(members: { user_id: user.id }) # elsif params[:category].to_s == "private" From b37ff07bcfdf46fd6a0c65e57e6f71fa576a9e44 Mon Sep 17 00:00:00 2001 From: yystopf Date: Fri, 24 Mar 2023 14:34:42 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=E4=B8=AA?= =?UTF-8?q?=E4=BA=BA=E9=A1=B9=E7=9B=AE=E5=88=86=E9=A1=B5limit=E4=BD=BF?= =?UTF-8?q?=E7=94=A89999?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/application_controller.rb | 8 ++++++++ app/controllers/users_controller.rb | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 8129df8f1..4e21949b0 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -680,6 +680,14 @@ class ApplicationController < ActionController::Base relation.page(page).per(limit) end + def kaminari_unlimit_paginate(ralation) + limit = params[:limit] || params[:per_page] + limit = (limit.to_i.zero? || limit.to_i > 9999) ? 9999 : limit.to_i + page = params[:page].to_i.zero? ? 1 : params[:page].to_i + + relation.page(page).per(limit) + end + def kaminari_array_paginate(relation) limit = params[:limit] || params[:per_page] limit = (limit.to_i.zero? || limit.to_i > 20) ? 20 : limit.to_i diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 33fd93f83..c4c745a7d 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -281,7 +281,7 @@ class UsersController < ApplicationController is_current_admin_user = User.current.logged? && (current_user&.admin? || current_user.id == @user.id) scope = Projects::ListMyQuery.call(params, @user,is_current_admin_user) @total_count = scope.size - @projects = paginate(scope) + @projects = kaminari_unlimit_paginate(scope) end # TODO 其他平台登录时同步修改gitea平台对应用户的密码 From 01467a3d2adcdafa2cec2459d6d77abe8b3eeeb3 Mon Sep 17 00:00:00 2001 From: yystopf Date: Fri, 24 Mar 2023 14:37:42 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=E4=B8=AA?= =?UTF-8?q?=E4=BA=BA=E9=A1=B9=E7=9B=AE=E5=88=86=E9=A1=B5limit=E4=BD=BF?= =?UTF-8?q?=E7=94=A89999?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/application_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 4e21949b0..517e1b2df 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -680,7 +680,7 @@ class ApplicationController < ActionController::Base relation.page(page).per(limit) end - def kaminari_unlimit_paginate(ralation) + def kaminari_unlimit_paginate(relation) limit = params[:limit] || params[:per_page] limit = (limit.to_i.zero? || limit.to_i > 9999) ? 9999 : limit.to_i page = params[:page].to_i.zero? ? 1 : params[:page].to_i