|
|
|
@@ -2,42 +2,21 @@ class ForksController < ApplicationController |
|
|
|
before_action :require_login |
|
|
|
before_action :require_profile_completed, only: [:create] |
|
|
|
before_action :load_project |
|
|
|
before_action :authenticate_user! |
|
|
|
before_action :authenticate_project!, only: [:create] |
|
|
|
|
|
|
|
def fork_list |
|
|
|
@user = current_user |
|
|
|
@organizations = current_user.organizations |
|
|
|
|
|
|
|
end |
|
|
|
before_action :authenticate_project!, :authenticate_user! |
|
|
|
|
|
|
|
def create |
|
|
|
target_owner = if params[:organization].present? && @organization |
|
|
|
@organization |
|
|
|
else |
|
|
|
current_user |
|
|
|
end |
|
|
|
@new_project = Projects::ForkService.new(target_owner, @project, params[:organization], params[:new_name], params[:new_identifier]).call |
|
|
|
if @new_project == false |
|
|
|
render_result(-1, "已fork过一次该项目,无法再次进行fork") |
|
|
|
end |
|
|
|
@new_project = Projects::ForkServiceProjects::ForkService.new(current_user, @project, params[:organization]).call |
|
|
|
end |
|
|
|
|
|
|
|
private |
|
|
|
def authenticate_project! |
|
|
|
if params[:organization].present? |
|
|
|
return render_forbidden('参数错误,当organization存在时不允许fork重命名') if params[:new_identifier].present? || params[:new_name].present? |
|
|
|
@organization = Organization.find_by(login:params[:organization]) |
|
|
|
return render_forbidden('组织不存在') unless @organization.present? |
|
|
|
return render_forbidden('你没有权限操作') unless @organization.is_admin?(current_user.id) |
|
|
|
return render_result(-1, "fork失败,组织已拥有了这个项目") if @organization && Project.exists?(user_id: [@organization.id], identifier: (params[:new_identifier] || @project.identifier)) |
|
|
|
return render_result(-1, "fork失败,请联系系统管理员") if gitea_check_exit(@organization) |
|
|
|
else |
|
|
|
return render_result(-1, "fork失败,您已fork过了这个项目") if Project.exists?(user_id: current_user.id, forked_from_project_id: @project.id) |
|
|
|
return render_result(-2, "fork失败, fork本人项目需要为fork仓库重命名") if Project.exists?(user_id: current_user.id, identifier: (params[:new_identifier] || @project.identifier)) |
|
|
|
return render_result(-1, "fork失败,请联系系统管理员") if gitea_check_exit(current_user) |
|
|
|
if current_user&.id == @project.user_id |
|
|
|
render_result(-1, "自己不能fork自己的项目") |
|
|
|
elsif Project.exists?(user_id: current_user.id, identifier: @project.identifier) |
|
|
|
render_result(0, "fork失败,你已拥有了这个项目") |
|
|
|
end |
|
|
|
|
|
|
|
# return if current_user != @project.owner |
|
|
|
# render_result(-1, "自己不能fork自己的项目") |
|
|
|
end |
|
|
|
|
|
|
|
def authenticate_user! |
|
|
|
@@ -45,9 +24,4 @@ class ForksController < ApplicationController |
|
|
|
return if @project.member?(current_user) || current_user.admin? |
|
|
|
render_forbidden('你没有权限操作') |
|
|
|
end |
|
|
|
|
|
|
|
def gitea_check_exit(user) |
|
|
|
data = Gitea::Repository::GetService.new(user, params[:new_identifier]|| @project.identifier).call |
|
|
|
data.present? |
|
|
|
end |
|
|
|
end |
|
|
|
end |