Skip to content
Snippets Groups Projects
Commit 29c50c53 authored by Patricio Cano's avatar Patricio Cano
Browse files

Default Git access protocol to `web`

parent fbaabb39
Branches
Tags
1 merge request!4696Add setting that allows admins to choose which Git access protocols are enabled.
Loading
@@ -44,19 +44,15 @@ module ApplicationSettingsHelper
Loading
@@ -44,19 +44,15 @@ module ApplicationSettingsHelper
end end
end end
   
def enabled_project_tooltip(project, protocol) def enabled_project_button(project, protocol)
case protocol case protocol
when 'ssh' when 'ssh'
sanitize_clone_button(ssh_clone_button(project, 'bottom')) ssh_clone_button(project, 'bottom', false)
else else
sanitize_clone_button(http_clone_button(project, 'bottom')) http_clone_button(project, 'bottom', false)
end end
end end
   
def sanitize_clone_button(input)
sanitize(input, tags: %w(a), attributes: %w(id class title data-html data-container data-placement data-title data-original-title aria-describedby))
end
# Return a group of checkboxes that use Bootstrap's button plugin for a # Return a group of checkboxes that use Bootstrap's button plugin for a
# toggle button effect. # toggle button effect.
def restricted_level_checkboxes(help_block_id) def restricted_level_checkboxes(help_block_id)
Loading
Loading
Loading
@@ -12,7 +12,7 @@ module BranchesHelper
Loading
@@ -12,7 +12,7 @@ module BranchesHelper
def can_push_branch?(project, branch_name) def can_push_branch?(project, branch_name)
return false unless project.repository.branch_exists?(branch_name) return false unless project.repository.branch_exists?(branch_name)
   
::Gitlab::GitAccess.new(current_user, project, 'web').can_push_to_branch?(branch_name) ::Gitlab::GitAccess.new(current_user, project).can_push_to_branch?(branch_name)
end end
   
def project_branches def project_branches
Loading
Loading
Loading
@@ -40,7 +40,7 @@ module ButtonHelper
Loading
@@ -40,7 +40,7 @@ module ButtonHelper
type: :button type: :button
end end
   
def http_clone_button(project, placement = 'right') def http_clone_button(project, placement = 'right', append_link = true)
klass = 'http-selector' klass = 'http-selector'
klass << ' has-tooltip' if current_user.try(:require_password?) klass << ' has-tooltip' if current_user.try(:require_password?)
   
Loading
@@ -48,7 +48,7 @@ module ButtonHelper
Loading
@@ -48,7 +48,7 @@ module ButtonHelper
   
content_tag :a, protocol, content_tag :a, protocol,
class: klass, class: klass,
href: project.http_url_to_repo, href: (project.http_url_to_repo if append_link),
data: { data: {
html: true, html: true,
placement: placement, placement: placement,
Loading
@@ -57,13 +57,13 @@ module ButtonHelper
Loading
@@ -57,13 +57,13 @@ module ButtonHelper
} }
end end
   
def ssh_clone_button(project, placement = 'right') def ssh_clone_button(project, placement = 'right', append_link = true)
klass = 'ssh-selector' klass = 'ssh-selector'
klass << ' has-tooltip' if current_user.try(:require_ssh_key?) klass << ' has-tooltip' if current_user.try(:require_ssh_key?)
   
content_tag :a, 'SSH', content_tag :a, 'SSH',
class: klass, class: klass,
href: project.ssh_url_to_repo, href: (project.ssh_url_to_repo if append_link),
data: { data: {
html: true, html: true,
placement: placement, placement: placement,
Loading
Loading
Loading
@@ -481,7 +481,7 @@ class MergeRequest < ActiveRecord::Base
Loading
@@ -481,7 +481,7 @@ class MergeRequest < ActiveRecord::Base
end end
   
def can_be_merged_by?(user) def can_be_merged_by?(user)
::Gitlab::GitAccess.new(user, project, 'web').can_push_to_branch?(target_branch) ::Gitlab::GitAccess.new(user, project).can_push_to_branch?(target_branch)
end end
   
def mergeable_ci_state? def mergeable_ci_state?
Loading
Loading
Loading
@@ -23,7 +23,7 @@ module Commits
Loading
@@ -23,7 +23,7 @@ module Commits
private private
   
def check_push_permissions def check_push_permissions
allowed = ::Gitlab::GitAccess.new(current_user, project, 'web').can_push_to_branch?(@target_branch) allowed = ::Gitlab::GitAccess.new(current_user, project).can_push_to_branch?(@target_branch)
   
unless allowed unless allowed
raise ValidationError.new('You are not allowed to push into this branch') raise ValidationError.new('You are not allowed to push into this branch')
Loading
Loading
Loading
@@ -43,7 +43,7 @@ module Files
Loading
@@ -43,7 +43,7 @@ module Files
end end
   
def validate def validate
allowed = ::Gitlab::GitAccess.new(current_user, project, 'web').can_push_to_branch?(@target_branch) allowed = ::Gitlab::GitAccess.new(current_user, project).can_push_to_branch?(@target_branch)
   
unless allowed unless allowed
raise_error("You are not allowed to push into this branch") raise_error("You are not allowed to push into this branch")
Loading
Loading
Loading
@@ -5,7 +5,7 @@ module Gitlab
Loading
@@ -5,7 +5,7 @@ module Gitlab
   
attr_reader :actor, :project, :protocol attr_reader :actor, :project, :protocol
   
def initialize(actor, project, protocol) def initialize(actor, project, protocol = 'web')
@actor = actor @actor = actor
@project = project @project = project
@protocol = protocol @protocol = protocol
Loading
@@ -50,8 +50,6 @@ module Gitlab
Loading
@@ -50,8 +50,6 @@ module Gitlab
end end
   
def check(cmd, changes = nil) def check(cmd, changes = nil)
raise 'Access denied due to unspecified Git access protocol' unless protocol.present?
return build_status_object(false, "Git access over #{protocol.upcase} is not allowed") unless protocol_allowed? return build_status_object(false, "Git access over #{protocol.upcase} is not allowed") unless protocol_allowed?
   
unless actor unless actor
Loading
Loading
module Gitlab module Gitlab
module ProtocolAccess module ProtocolAccess
def self.allowed?(protocol) def self.allowed?(protocol)
if protocol.to_s == 'web' if protocol == 'web'
true true
elsif current_application_settings.enabled_git_access_protocol.blank? elsif current_application_settings.enabled_git_access_protocol.blank?
true true
else else
protocol.to_s == current_application_settings.enabled_git_access_protocol protocol == current_application_settings.enabled_git_access_protocol
end end
end end
end end
Loading
Loading
require 'spec_helper' require 'spec_helper'
   
describe Gitlab::GitAccess, lib: true do describe Gitlab::GitAccess, lib: true do
let(:access) { Gitlab::GitAccess.new(actor, project, 'web') } let(:access) { Gitlab::GitAccess.new(actor, project) }
let(:project) { create(:project) } let(:project) { create(:project) }
let(:user) { create(:user) } let(:user) { create(:user) }
let(:actor) { user } let(:actor) { user }
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment