From 119883042281d10bef72309e8596e2e3602ab2ae Mon Sep 17 00:00:00 2001 From: yystopf Date: Tue, 12 Oct 2021 16:41:01 +0800 Subject: [PATCH 1/4] add: project permit change identifier --- app/controllers/projects_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index bea2b429c..e4ad2f136 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -229,7 +229,7 @@ class ProjectsController < ApplicationController private def project_params - params.permit(:user_id, :name, :description, :repository_name, :website, :lesson_url, :default_branch, + params.permit(:user_id, :name, :description, :repository_name, :website, :lesson_url, :default_branch, :identifier, :project_category_id, :project_language_id, :license_id, :ignore_id, :private) end From 018745c062e1067ed1b9dd5938bc632f28fa838e Mon Sep 17 00:00:00 2001 From: yystopf Date: Tue, 12 Oct 2021 17:08:25 +0800 Subject: [PATCH 2/4] add: project permit change identifier --- app/controllers/projects_controller.rb | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index e4ad2f136..95d9bc1ac 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -139,11 +139,12 @@ class ProjectsController < ApplicationController gitea_params = { private: private, default_branch: @project.default_branch, - website: @project.website + website: @project.website, + name: @project.identifier } if [true, false].include? private - Gitea::Repository::UpdateService.call(@owner, @project.identifier, gitea_params) - @project.repository.update_column(:hidden, private) + Gitea::Repository::UpdateService.call(@owner, @project&.repository&.identifier, gitea_params) + @project.repository.update_attributes({hidden: private, identifier: @project.identifier}) end end SendTemplateMessageJob.perform_later('ProjectSettingChanged', current_user.id, @project&.id, @project.previous_changes.slice(:name, :description, :project_category_id, :project_language_id, :is_public)) From 00100e59c451471b17cff059b2a4147f028e329e Mon Sep 17 00:00:00 2001 From: yystopf Date: Tue, 12 Oct 2021 17:15:50 +0800 Subject: [PATCH 3/4] add: project permit change identifier --- app/controllers/projects_controller.rb | 6 ++---- app/services/gitea/repository/update_service.rb | 3 ++- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index 95d9bc1ac..25d8b8d76 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -142,10 +142,8 @@ class ProjectsController < ApplicationController website: @project.website, name: @project.identifier } - if [true, false].include? private - Gitea::Repository::UpdateService.call(@owner, @project&.repository&.identifier, gitea_params) - @project.repository.update_attributes({hidden: private, identifier: @project.identifier}) - end + gitea_repo = Gitea::Repository::UpdateService.call(@owner, @project&.repository&.identifier, gitea_params) + @project.repository.update_attributes({hidden: gitea_repo["private"], identifier: gitea_repo["name"]}) end SendTemplateMessageJob.perform_later('ProjectSettingChanged', current_user.id, @project&.id, @project.previous_changes.slice(:name, :description, :project_category_id, :project_language_id, :is_public)) end diff --git a/app/services/gitea/repository/update_service.rb b/app/services/gitea/repository/update_service.rb index 0d27922b8..6c4eff1b3 100644 --- a/app/services/gitea/repository/update_service.rb +++ b/app/services/gitea/repository/update_service.rb @@ -19,7 +19,8 @@ class Gitea::Repository::UpdateService < Gitea::ClientService end def call - patch(url, data_params) + response = patch(url, data_params) + render_200_response(response) end private From 98a45eb05cc30b6cb0e02817606324ef9fc732f8 Mon Sep 17 00:00:00 2001 From: yystopf Date: Thu, 14 Oct 2021 14:25:00 +0800 Subject: [PATCH 4/4] fix: update repository identifier valid --- app/controllers/projects_controller.rb | 4 ++-- app/forms/projects/update_form.rb | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index 25d8b8d76..54ae85ca0 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -127,9 +127,9 @@ class ProjectsController < ApplicationController Gitea::Repository::UpdateService.call(@owner, @project.identifier, gitea_params) else validate_params = project_params.slice(:name, :description, - :project_category_id, :project_language_id, :private) + :project_category_id, :project_language_id, :private, :identifier) - Projects::UpdateForm.new(validate_params).validate! + Projects::UpdateForm.new(validate_params.merge(user_id: @project.user_id)).validate! private = @project.forked_from_project.present? ? !@project.forked_from_project.is_public : params[:private] || false diff --git a/app/forms/projects/update_form.rb b/app/forms/projects/update_form.rb index 0cd2c9459..9ccc611cf 100644 --- a/app/forms/projects/update_form.rb +++ b/app/forms/projects/update_form.rb @@ -1,11 +1,12 @@ class Projects::UpdateForm < BaseForm - attr_accessor :name, :description, :project_category_id, :project_language_id, :private + attr_accessor :name, :description, :project_category_id, :project_language_id, :private, :identifier, :user_id validates :name, presence: true validates :name, length: { maximum: 50 } validates :description, length: { maximum: 200 } validate do check_project_category(project_category_id) check_project_language(project_language_id) + check_repository_name(user_id, identifier) unless identifier.blank? end end