forgeplus/app/controllers/forks_controller.rb

31 lines
1.3 KiB
Ruby
Raw Normal View History

2020-03-09 00:40:16 +08:00
class ForksController < ApplicationController
2020-08-11 23:20:04 +08:00
before_action :require_login
2021-08-31 18:00:54 +08:00
before_action :require_profile_completed, only: [:create]
2020-08-11 23:20:04 +08:00
before_action :load_project
2023-07-24 09:28:51 +08:00
before_action :authenticate_project!, :authenticate_user!
2020-03-09 00:40:16 +08:00
def create
2023-08-22 09:36:12 +08:00
@new_project = Projects::ForkService.new(current_user, @project, params[:organization], params[:new_name], params[:new_identifier]).call
2020-03-09 00:40:16 +08:00
end
private
def authenticate_project!
2023-07-24 09:28:51 +08:00
if current_user&.id == @project.user_id
render_result(-1, "自己不能fork自己的项目")
elsif @project.fork_users.where(user_id: current_user.id).present?
fork = @project.fork_users.find_by(user_id: current_user.id)
render json: { status: 0, id: fork.fork_project_id, identifier: fork.fork_project&.identifier, message: "fork失败你已拥有了这个项目 #{fork.fork_project&.identifier}" }
return
2023-07-24 09:28:51 +08:00
elsif Project.exists?(user_id: current_user.id, identifier: @project.identifier)
render_result(0, "fork失败你已拥有了这个项目")
2023-07-04 16:44:32 +08:00
end
2023-07-24 09:28:51 +08:00
# return if current_user != @project.owner
# render_result(-1, "自己不能fork自己的项目")
2020-03-09 00:40:16 +08:00
end
def authenticate_user!
return if @project.is_public
return if @project.member?(current_user) || current_user.admin?
render_forbidden('你没有权限操作')
end
2023-07-24 09:28:51 +08:00
end