From f796d1be42ec030f09c5730804f912e39cc1bd54 Mon Sep 17 00:00:00 2001 From: xxq250 Date: Fri, 9 Dec 2022 14:03:41 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=94=B9=E7=BB=84=E7=BB=87=E5=8F=AF?= =?UTF-8?q?=E8=A7=81=E6=80=A7=E4=B8=BA=E7=A7=81=E6=9C=89=EF=BC=8C=E5=88=99?= =?UTF-8?q?=E9=9C=80=E5=B0=86=E8=AF=A5=E7=BB=84=E7=BB=87=E4=B8=8B=E7=9A=84?= =?UTF-8?q?=E6=89=80=E6=9C=89=E4=BB=93=E5=BA=93=E5=90=8C=E6=AD=A5=E6=9B=B4?= =?UTF-8?q?=E6=94=B9=E4=B8=BA=E7=A7=81=E6=9C=89=E4=BB=93=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../organizations/organizations_controller.rb | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/app/controllers/organizations/organizations_controller.rb b/app/controllers/organizations/organizations_controller.rb index 0ae113590..1a6b1bd4d 100644 --- a/app/controllers/organizations/organizations_controller.rb +++ b/app/controllers/organizations/organizations_controller.rb @@ -46,6 +46,12 @@ class Organizations::OrganizationsController < Organizations::BaseController @organization.nickname = organization_params[:nickname] if organization_params[:nickname].present? @organization.save! sync_organization_extension! + # 更改组织可见性为私有,则需将该组织下的所有仓库同步更改为私有仓库 + if organization_extension_params[:visibility] == "privacy" + Project.where(user_id: @organization.id).where(is_public: true).each do |project| + update_project_private(project) + end + end Gitea::Organization::UpdateService.call(current_user.gitea_token, login, @organization.reload) Util.write_file(@image, avatar_path(@organization)) if params[:image].present? @@ -123,5 +129,20 @@ class Organizations::OrganizationsController < Organizations::BaseController def sync_organization_extension! @organization.organization_extension.update_attributes!(organization_extension_params) end + + def update_project_private(project) + project.update_attributes!(is_public: false) + project.forked_projects.update_all(is_public: project.is_public) + gitea_params = { + private: false, + default_branch: project.default_branch, + website: project.website, + name: project.identifier + } + gitea_repo = Gitea::Repository::UpdateService.call(@organization, project&.repository&.identifier, gitea_params) + project.repository.update_attributes({hidden: gitea_repo["private"], identifier: gitea_repo["name"]}) + # 更新对应所属分类下的项目数量(私有) + project.project_category.decrement!(:private_projects_count, 1) if project.project_category.present? + end end \ No newline at end of file