diff --git a/app/forms/base_form.rb b/app/forms/base_form.rb index 44b5109c3..19af61026 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 8ef7befac..cd2b9ffb5 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 98ebbc7ac..649fcbb92 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 226b2dc59..e75858c5a 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