| @@ -26,6 +26,16 @@ class BaseForm | |||||
| raise "项目标识已被使用." if Repository.where(user_id: user_id, identifier: repository_name.strip).exists? | raise "项目标识已被使用." if Repository.where(user_id: user_id, identifier: repository_name.strip).exists? | ||||
| end | 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) | def check_project_name(user_id, project_name) | ||||
| raise "项目名称已被使用." if Project.where(user_id: user_id, name: project_name.strip).exists? | raise "项目名称已被使用." if Project.where(user_id: user_id, name: project_name.strip).exists? | ||||
| end | end | ||||
| @@ -16,6 +16,7 @@ class Projects::CreateForm < BaseForm | |||||
| check_project_language(project_language_id) | check_project_language(project_language_id) | ||||
| check_project_name(user_id, name) unless name.blank? | check_project_name(user_id, name) unless name.blank? | ||||
| check_repository_name(user_id, repository_name) unless repository_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_token_all(blockchain_token_all) unless blockchain_token_all.blank? | ||||
| check_blockchain_init_token(blockchain_init_token) unless blockchain_init_token.blank? | check_blockchain_init_token(blockchain_init_token) unless blockchain_init_token.blank? | ||||
| end | end | ||||
| @@ -11,6 +11,7 @@ class Projects::MigrateForm < BaseForm | |||||
| validate do | validate do | ||||
| check_project_name(user_id, name) unless name.blank? | check_project_name(user_id, name) unless name.blank? | ||||
| check_repository_name(user_id, repository_name) unless repository_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_category(project_category_id) | ||||
| check_project_language(project_language_id) | check_project_language(project_language_id) | ||||
| check_owner | check_owner | ||||
| @@ -10,6 +10,7 @@ class Projects::UpdateForm < BaseForm | |||||
| check_project_language(project_language_id) | check_project_language(project_language_id) | ||||
| check_repository_name(user_id, identifier) unless identifier.blank? || identifier == project_identifier | 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 | check_project_name(user_id, name) unless name.blank? || name == project_name | ||||
| end | end | ||||