From 551f9cbbada07be24ea1a34f79fce887ef27220e Mon Sep 17 00:00:00 2001 From: yystopf Date: Wed, 3 Jul 2024 10:54:33 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=E5=88=9B=E5=BB=BA?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E5=BB=BA=E7=AB=8B=E4=B8=8Egitea=E7=9A=84?= =?UTF-8?q?=E5=85=B3=E8=81=94=E5=85=B3=E7=B3=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/forms/base_form.rb | 10 ++++++++++ app/forms/projects/create_form.rb | 1 + app/forms/projects/migrate_form.rb | 1 + app/forms/projects/update_form.rb | 1 + 4 files changed, 13 insertions(+) diff --git a/app/forms/base_form.rb b/app/forms/base_form.rb index 44b5109c..19af6102 100644 --- a/app/forms/base_form.rb +++ b/app/forms/base_form.rb @@ -26,6 +26,16 @@ class BaseForm raise "项目标识已被使用." if Repository.where(user_id: user_id, identifier: repository_name.strip).exists? end + def check_gitea_repository_name(user_id, repository_name) + user_login = User.find_by_id(user_id)&.login + begin + gitea_result = $gitea_client.get_repos_by_owner_repo(user_login, repository_name) + raise "项目标识已被使用." if gitea_result["id"].present? + rescue Gitea::Api::ServerError => e + raise "服务器错误,请联系系统管理员!" unless e.http_code.to_i == 404 + end + end + def check_project_name(user_id, project_name) raise "项目名称已被使用." if Project.where(user_id: user_id, name: project_name.strip).exists? end diff --git a/app/forms/projects/create_form.rb b/app/forms/projects/create_form.rb index 8ef7befa..cd2b9ffb 100644 --- a/app/forms/projects/create_form.rb +++ b/app/forms/projects/create_form.rb @@ -16,6 +16,7 @@ class Projects::CreateForm < BaseForm check_project_language(project_language_id) check_project_name(user_id, name) unless name.blank? check_repository_name(user_id, repository_name) unless repository_name.blank? + check_gitea_repository_name(user_id, repository_name) unless repository_name.blank? check_blockchain_token_all(blockchain_token_all) unless blockchain_token_all.blank? check_blockchain_init_token(blockchain_init_token) unless blockchain_init_token.blank? end diff --git a/app/forms/projects/migrate_form.rb b/app/forms/projects/migrate_form.rb index 98ebbc7a..649fcbb9 100644 --- a/app/forms/projects/migrate_form.rb +++ b/app/forms/projects/migrate_form.rb @@ -11,6 +11,7 @@ class Projects::MigrateForm < BaseForm validate do check_project_name(user_id, name) unless name.blank? check_repository_name(user_id, repository_name) unless repository_name.blank? + check_gitea_repository_name(user_id, repository_name) unless repository_name.blank? check_project_category(project_category_id) check_project_language(project_language_id) check_owner diff --git a/app/forms/projects/update_form.rb b/app/forms/projects/update_form.rb index 226b2dc5..e75858c5 100644 --- a/app/forms/projects/update_form.rb +++ b/app/forms/projects/update_form.rb @@ -10,6 +10,7 @@ class Projects::UpdateForm < BaseForm check_project_language(project_language_id) check_repository_name(user_id, identifier) unless identifier.blank? || identifier == project_identifier + check_gitea_repository_name(user_id, identifier) unless identifier.blank? || identifier == project_identifier check_project_name(user_id, name) unless name.blank? || name == project_name end