Adds option to push over SSH to create a new project

This commit is contained in:
Tiago Botelho 2018-01-18 16:07:07 +00:00
parent 921d2afc69
commit 35882e681b
3 changed files with 20 additions and 7 deletions

View File

@ -12,7 +12,7 @@ class Projects::GitHttpController < Projects::GitHttpClientController
log_user_activity if upload_pack?
if project.blank? && params[:service] == 'git-receive-pack'
@project = ::Projects::CreateService.new(access_actor, project_params).execute
@project = ::Projects::CreateService.new(user, project_params).execute
return render_ok if @project.saved?
end
@ -34,10 +34,10 @@ class Projects::GitHttpController < Projects::GitHttpClientController
def project_params
{
description: "",
path: params[:project_id].gsub("\.git", ''),
namespace_id: namespace.id.to_s,
visibility_level: Gitlab::VisibilityLevel::PRIVATE.to_s
description: "",
path: params[:project_id].gsub("\.git", ''),
namespace_id: namespace.id.to_s,
visibility_level: Gitlab::VisibilityLevel::PRIVATE.to_s
}
end

View File

@ -43,7 +43,7 @@ module API
access_checker_klass = wiki? ? Gitlab::GitAccessWiki : Gitlab::GitAccess
access_checker = access_checker_klass
.new(actor, project, protocol, authentication_abilities: ssh_authentication_abilities, redirected_path: redirected_path)
.new(actor, project, protocol, authentication_abilities: ssh_authentication_abilities, redirected_path: redirected_path, target_namespace: user.namespace)
begin
access_checker.check(params[:action], params[:changes])
@ -51,6 +51,19 @@ module API
return { status: false, message: e.message }
end
if project.blank? && params[:action] == 'git-receive-pack'
project_params = {
description: "",
path: params[:project].split('/').last.gsub("\.git", ''),
namespace_id: user.namespace.id.to_s,
visibility_level: Gitlab::VisibilityLevel::PRIVATE.to_s
}
@project = ::Projects::CreateService.new(user, project_params).execute
return { status: false, message: "Could not create project" } unless @project.saved?
end
log_user_activity(actor)
{

View File

@ -250,7 +250,7 @@ module Gitlab
def can_create_project_in_namespace?
return unless target_namespace
actor.can?(:create_projects, target_namespace)
user.can?(:create_projects, target_namespace)
end
def http?