Adds option to push over SSH to create a new project
This commit is contained in:
		
							parent
							
								
									921d2afc69
								
							
						
					
					
						commit
						35882e681b
					
				| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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)
 | 
			
		||||
 | 
			
		||||
        {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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?
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue