debian-mirror-gitlab/lib/gitlab/protocol_access.rb

44 lines
1.3 KiB
Ruby
Raw Normal View History

2018-12-13 13:39:08 +05:30
# frozen_string_literal: true
2016-08-24 12:49:21 +05:30
module Gitlab
module ProtocolAccess
2022-07-23 23:45:48 +05:30
class << self
def allowed?(protocol, project: nil)
# Web is always allowed
return true if protocol == "web"
# System settings
return false unless instance_allowed?(protocol)
# Group-level settings
return false unless namespace_allowed?(protocol, namespace: project&.root_namespace)
# Default to allowing all protocols
2016-08-24 12:49:21 +05:30
true
2022-07-23 23:45:48 +05:30
end
private
def instance_allowed?(protocol)
# If admin hasn't configured this setting, default to true
return true if Gitlab::CurrentSettings.enabled_git_access_protocol.blank?
2018-03-17 18:26:18 +05:30
protocol == Gitlab::CurrentSettings.enabled_git_access_protocol
2016-08-24 12:49:21 +05:30
end
2022-07-23 23:45:48 +05:30
def namespace_allowed?(protocol, namespace: nil)
# If the namespace parameter was nil, we default to true here
return true if namespace.nil?
# Return immediately if all protocols are allowed
return true if namespace.enabled_git_access_protocol == "all"
# If the setting is somehow nil, such as in an unsaved state, we default to allow
return true if namespace.enabled_git_access_protocol.blank?
protocol == namespace.enabled_git_access_protocol
end
2016-08-24 12:49:21 +05:30
end
end
end