2018-08-18 07:19:57 -04:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2015-01-08 03:22:50 -05:00
|
|
|
module ApplicationSettingsHelper
|
2017-07-13 12:03:52 -04:00
|
|
|
extend self
|
2017-08-31 05:47:03 -04:00
|
|
|
|
2019-11-04 01:06:46 -05:00
|
|
|
delegate :allow_signup?,
|
|
|
|
:gravatar_enabled?,
|
|
|
|
:password_authentication_enabled_for_web?,
|
|
|
|
:akismet_enabled?,
|
|
|
|
to: :'Gitlab::CurrentSettings.current_application_settings'
|
2015-01-08 12:53:35 -05:00
|
|
|
|
2015-05-29 07:29:16 -04:00
|
|
|
def user_oauth_applications?
|
2018-02-02 13:39:55 -05:00
|
|
|
Gitlab::CurrentSettings.user_oauth_applications
|
2015-05-29 07:29:16 -04:00
|
|
|
end
|
|
|
|
|
2016-06-15 18:30:55 -04:00
|
|
|
def allowed_protocols_present?
|
2018-02-02 13:39:55 -05:00
|
|
|
Gitlab::CurrentSettings.enabled_git_access_protocol.present?
|
2016-06-15 18:30:55 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
def enabled_protocol
|
2018-02-02 13:39:55 -05:00
|
|
|
case Gitlab::CurrentSettings.enabled_git_access_protocol
|
2016-06-15 18:30:55 -04:00
|
|
|
when 'http'
|
2019-01-03 16:17:44 -05:00
|
|
|
Gitlab.config.gitlab.protocol
|
2016-06-15 18:30:55 -04:00
|
|
|
when 'ssh'
|
|
|
|
'ssh'
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2021-02-16 22:08:59 -05:00
|
|
|
def kroki_available_formats
|
|
|
|
ApplicationSetting.kroki_formats_attributes.map do |key, value|
|
|
|
|
{
|
|
|
|
name: "kroki_formats_#{key}",
|
|
|
|
label: value[:label],
|
|
|
|
value: @application_setting.kroki_formats[key] || false
|
|
|
|
}
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2020-06-16 08:09:00 -04:00
|
|
|
def storage_weights
|
2022-04-12 11:08:32 -04:00
|
|
|
# Instead of using a `Struct` we could wrap this into an object.
|
|
|
|
# See https://gitlab.com/gitlab-org/gitlab/-/issues/358419
|
|
|
|
weights = Struct.new(*Gitlab.config.repositories.storages.keys.map(&:to_sym))
|
|
|
|
|
|
|
|
values = Gitlab.config.repositories.storages.keys.map do |storage|
|
|
|
|
@application_setting.repository_storages_weighted[storage] || 0
|
2020-06-16 08:09:00 -04:00
|
|
|
end
|
2022-04-12 11:08:32 -04:00
|
|
|
|
|
|
|
weights.new(*values)
|
2020-06-16 08:09:00 -04:00
|
|
|
end
|
|
|
|
|
2018-12-23 23:58:24 -05:00
|
|
|
def all_protocols_enabled?
|
|
|
|
Gitlab::CurrentSettings.enabled_git_access_protocol.blank?
|
|
|
|
end
|
|
|
|
|
|
|
|
def ssh_enabled?
|
|
|
|
all_protocols_enabled? || enabled_protocol == 'ssh'
|
|
|
|
end
|
|
|
|
|
|
|
|
def http_enabled?
|
2019-01-03 16:17:44 -05:00
|
|
|
all_protocols_enabled? || Gitlab::CurrentSettings.enabled_git_access_protocol == 'http'
|
2018-12-23 23:58:24 -05:00
|
|
|
end
|
|
|
|
|
2020-11-24 04:09:32 -05:00
|
|
|
def enabled_protocol_button(container, protocol)
|
2016-06-15 18:30:55 -04:00
|
|
|
case protocol
|
|
|
|
when 'ssh'
|
2020-11-24 04:09:32 -05:00
|
|
|
ssh_clone_button(container, append_link: false)
|
2016-06-15 18:30:55 -04:00
|
|
|
else
|
2020-11-24 04:09:32 -05:00
|
|
|
http_clone_button(container, append_link: false)
|
2016-06-15 18:30:55 -04:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2022-04-15 02:08:54 -04:00
|
|
|
def restricted_level_checkboxes(form)
|
2017-07-12 13:38:02 -04:00
|
|
|
Gitlab::VisibilityLevel.values.map do |level|
|
2015-03-01 10:06:46 -05:00
|
|
|
checked = restricted_visibility_levels(true).include?(level)
|
2022-04-15 02:08:54 -04:00
|
|
|
|
|
|
|
form.gitlab_ui_checkbox_component(
|
|
|
|
:restricted_visibility_levels,
|
|
|
|
"#{visibility_level_icon(level)} #{visibility_level_label(level)}".html_safe,
|
|
|
|
checkbox_options: { checked: checked, multiple: true, autocomplete: 'off' },
|
|
|
|
checked_value: level,
|
|
|
|
unchecked_value: nil
|
|
|
|
)
|
2015-03-01 10:06:46 -05:00
|
|
|
end
|
|
|
|
end
|
2015-08-12 02:13:20 -04:00
|
|
|
|
2022-04-15 02:08:54 -04:00
|
|
|
def import_sources_checkboxes(form)
|
2015-08-12 02:13:20 -04:00
|
|
|
Gitlab::ImportSources.options.map do |name, source|
|
2019-07-01 19:44:54 -04:00
|
|
|
checked = @application_setting.import_sources.include?(source)
|
2022-04-15 02:08:54 -04:00
|
|
|
|
|
|
|
form.gitlab_ui_checkbox_component(
|
|
|
|
:import_sources,
|
|
|
|
name,
|
|
|
|
checkbox_options: { checked: checked, multiple: true, autocomplete: 'off' },
|
|
|
|
checked_value: source,
|
|
|
|
unchecked_value: nil
|
|
|
|
)
|
2015-08-12 02:13:20 -04:00
|
|
|
end
|
|
|
|
end
|
2016-05-04 06:33:33 -04:00
|
|
|
|
2022-05-04 05:09:02 -04:00
|
|
|
def oauth_providers_checkboxes(form)
|
2016-05-04 06:33:33 -04:00
|
|
|
button_based_providers.map do |source|
|
2022-05-04 05:09:02 -04:00
|
|
|
checked = !@application_setting.disabled_oauth_sign_in_sources.include?(source.to_s)
|
2018-04-13 11:54:08 -04:00
|
|
|
name = Gitlab::Auth::OAuth::Provider.label_for(source)
|
2022-05-04 05:09:02 -04:00
|
|
|
|
|
|
|
form.gitlab_ui_checkbox_component(
|
|
|
|
:enabled_oauth_sign_in_sources,
|
|
|
|
name,
|
|
|
|
checkbox_options: { checked: checked, multiple: true, autocomplete: 'off' },
|
|
|
|
checked_value: source,
|
|
|
|
unchecked_value: nil
|
|
|
|
)
|
2016-05-04 06:33:33 -04:00
|
|
|
end
|
|
|
|
end
|
2016-06-29 23:35:00 -04:00
|
|
|
|
2017-08-25 09:08:48 -04:00
|
|
|
def key_restriction_options_for_select(type)
|
|
|
|
bit_size_options = Gitlab::SSHPublicKey.supported_sizes(type).map do |bits|
|
|
|
|
["Must be at least #{bits} bits", bits]
|
2017-08-21 06:30:03 -04:00
|
|
|
end
|
2017-08-25 09:08:48 -04:00
|
|
|
|
|
|
|
[
|
|
|
|
['Are allowed', 0],
|
|
|
|
*bit_size_options,
|
|
|
|
['Are forbidden', ApplicationSetting::FORBIDDEN_KEY_VALUE]
|
|
|
|
]
|
2017-08-21 06:30:03 -04:00
|
|
|
end
|
|
|
|
|
2020-02-12 13:09:21 -05:00
|
|
|
def repository_storages_options_json
|
|
|
|
options = Gitlab.config.repositories.storages.map do |name, storage|
|
|
|
|
{
|
|
|
|
label: "#{name} - #{storage['gitaly_address']}",
|
|
|
|
value: name
|
|
|
|
}
|
|
|
|
end
|
|
|
|
|
|
|
|
options.to_json
|
|
|
|
end
|
|
|
|
|
2019-04-09 11:38:58 -04:00
|
|
|
def external_authorization_description
|
2022-01-07 19:14:32 -05:00
|
|
|
s_("ExternalAuthorization|Access to projects is validated on an external service"\
|
2019-04-09 11:38:58 -04:00
|
|
|
" using their classification label.")
|
|
|
|
end
|
|
|
|
|
|
|
|
def external_authorization_timeout_help_text
|
2022-01-07 19:14:32 -05:00
|
|
|
s_("ExternalAuthorization|Period GitLab waits for a response from the external "\
|
|
|
|
"service. If there is no response, access is denied. Default: 0.5 seconds.")
|
2019-04-09 11:38:58 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
def external_authorization_url_help_text
|
2022-01-07 19:14:32 -05:00
|
|
|
s_("ExternalAuthorization|URL to which the projects make authorization requests. If the URL is blank, cross-project "\
|
|
|
|
"features are available and can still specify classification "\
|
|
|
|
"labels for projects.")
|
2019-04-09 11:38:58 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
def external_authorization_client_certificate_help_text
|
2022-01-07 19:14:32 -05:00
|
|
|
s_("ExternalAuthorization|Certificate used to authenticate with the external authorization service. "\
|
|
|
|
"If blank, the server certificate is validated when accessing over HTTPS.")
|
2019-04-09 11:38:58 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
def external_authorization_client_key_help_text
|
2022-01-07 19:14:32 -05:00
|
|
|
s_("ExternalAuthorization|Private key of client authentication certificate. "\
|
|
|
|
"Encrypted when stored.")
|
2019-04-09 11:38:58 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
def external_authorization_client_pass_help_text
|
2022-01-07 19:14:32 -05:00
|
|
|
s_("ExternalAuthorization|Passphrase required to decrypt the private key. "\
|
|
|
|
"Encrypted when stored.")
|
|
|
|
end
|
|
|
|
|
|
|
|
def external_authorization_client_url_help_text
|
|
|
|
s_("ExternalAuthorization|Classification label to use when requesting authorization if no specific "\
|
|
|
|
" label is defined on the project.")
|
2019-04-09 11:38:58 -04:00
|
|
|
end
|
|
|
|
|
2021-09-13 14:11:46 -04:00
|
|
|
def sidekiq_job_limiter_mode_help_text
|
|
|
|
_("How the job limiter handles jobs exceeding the thresholds specified below. "\
|
|
|
|
"The 'track' mode only logs the jobs. The 'compress' mode compresses the jobs and "\
|
|
|
|
"raises an exception if the compressed size exceeds the limit.")
|
|
|
|
end
|
|
|
|
|
|
|
|
def sidekiq_job_limiter_modes_for_select
|
|
|
|
ApplicationSetting.sidekiq_job_limiter_modes.keys.map { |mode| [mode.humanize, mode] }
|
|
|
|
end
|
|
|
|
|
2017-07-13 12:03:52 -04:00
|
|
|
def visible_attributes
|
2020-10-02 17:08:18 -04:00
|
|
|
[
|
2020-09-25 20:09:35 -04:00
|
|
|
:abuse_notification_email,
|
2021-03-17 20:08:58 -04:00
|
|
|
:admin_mode,
|
2017-07-13 12:03:52 -04:00
|
|
|
:after_sign_out_path,
|
|
|
|
:after_sign_up_text,
|
|
|
|
:akismet_api_key,
|
|
|
|
:akismet_enabled,
|
2019-08-01 09:22:54 -04:00
|
|
|
:allow_local_requests_from_hooks_and_services,
|
2019-07-26 06:21:52 -04:00
|
|
|
:allow_local_requests_from_web_hooks_and_services,
|
|
|
|
:allow_local_requests_from_system_hooks,
|
2019-05-29 12:43:07 -04:00
|
|
|
:dns_rebinding_protection_enabled,
|
2018-10-23 06:58:41 -04:00
|
|
|
:archive_builds_in_human_readable,
|
2019-02-20 18:51:55 -05:00
|
|
|
:asset_proxy_enabled,
|
|
|
|
:asset_proxy_secret_key,
|
|
|
|
:asset_proxy_url,
|
2021-02-03 01:10:04 -05:00
|
|
|
:asset_proxy_allowlist,
|
2019-07-22 10:56:40 -04:00
|
|
|
:static_objects_external_storage_auth_token,
|
|
|
|
:static_objects_external_storage_url,
|
2017-05-30 19:24:45 -04:00
|
|
|
:authorized_keys_enabled,
|
2017-08-24 07:01:33 -04:00
|
|
|
:auto_devops_enabled,
|
2018-01-22 13:31:03 -05:00
|
|
|
:auto_devops_domain,
|
2020-04-08 05:09:43 -04:00
|
|
|
:container_expiration_policies_enable_historic_entries,
|
2022-03-04 01:18:17 -05:00
|
|
|
:container_registry_expiration_policies_caching,
|
2017-07-13 12:03:52 -04:00
|
|
|
:container_registry_token_expire_delay,
|
|
|
|
:default_artifacts_expire_in,
|
2020-07-01 17:08:51 -04:00
|
|
|
:default_branch_name,
|
2017-07-13 12:03:52 -04:00
|
|
|
:default_branch_protection,
|
2019-11-13 10:07:29 -05:00
|
|
|
:default_ci_config_path,
|
2017-07-13 12:03:52 -04:00
|
|
|
:default_group_visibility,
|
2019-04-05 14:49:46 -04:00
|
|
|
:default_project_creation,
|
2017-07-13 12:03:52 -04:00
|
|
|
:default_project_visibility,
|
|
|
|
:default_projects_limit,
|
|
|
|
:default_snippet_visibility,
|
2022-04-12 11:08:32 -04:00
|
|
|
:delete_inactive_projects,
|
2020-12-06 22:09:49 -05:00
|
|
|
:disable_feed_token,
|
2017-07-13 12:03:52 -04:00
|
|
|
:disabled_oauth_sign_in_sources,
|
2020-11-10 07:08:57 -05:00
|
|
|
:domain_denylist,
|
|
|
|
:domain_denylist_enabled,
|
2020-10-29 02:08:45 -04:00
|
|
|
# TODO Remove domain_denylist_raw in APIv5 (See https://gitlab.com/gitlab-org/gitlab-foss/issues/67204)
|
|
|
|
:domain_denylist_raw,
|
2020-11-10 07:08:57 -05:00
|
|
|
:domain_allowlist,
|
2020-10-29 02:08:45 -04:00
|
|
|
# TODO Remove domain_allowlist_raw in APIv5 (See https://gitlab.com/gitlab-org/gitlab-foss/issues/67204)
|
|
|
|
:domain_allowlist_raw,
|
|
|
|
:outbound_local_requests_allowlist_raw,
|
2017-08-25 09:08:48 -04:00
|
|
|
:dsa_key_restriction,
|
|
|
|
:ecdsa_key_restriction,
|
2022-02-04 01:15:28 -05:00
|
|
|
:ecdsa_sk_key_restriction,
|
2017-08-25 09:08:48 -04:00
|
|
|
:ed25519_key_restriction,
|
2022-02-04 01:15:28 -05:00
|
|
|
:ed25519_sk_key_restriction,
|
2019-11-08 01:06:24 -05:00
|
|
|
:eks_integration_enabled,
|
|
|
|
:eks_account_id,
|
|
|
|
:eks_access_key_id,
|
|
|
|
:eks_secret_access_key,
|
2017-07-13 12:03:52 -04:00
|
|
|
:email_author_in_body,
|
|
|
|
:enabled_git_access_protocol,
|
2018-07-30 06:16:54 -04:00
|
|
|
:enforce_terms,
|
2022-07-06 17:08:58 -04:00
|
|
|
:error_tracking_enabled,
|
|
|
|
:error_tracking_api_url,
|
2021-04-15 20:09:09 -04:00
|
|
|
:external_pipeline_validation_service_timeout,
|
|
|
|
:external_pipeline_validation_service_token,
|
|
|
|
:external_pipeline_validation_service_url,
|
2019-01-10 16:06:42 -05:00
|
|
|
:first_day_of_week,
|
2021-05-07 05:10:27 -04:00
|
|
|
:floc_enabled,
|
2020-01-14 13:08:31 -05:00
|
|
|
:force_pages_access_control,
|
2017-11-29 04:12:12 -05:00
|
|
|
:gitaly_timeout_default,
|
|
|
|
:gitaly_timeout_medium,
|
|
|
|
:gitaly_timeout_fast,
|
2020-09-16 14:09:47 -04:00
|
|
|
:gitpod_enabled,
|
|
|
|
:gitpod_url,
|
2019-07-03 12:09:51 -04:00
|
|
|
:grafana_enabled,
|
|
|
|
:grafana_url,
|
2017-07-13 12:03:52 -04:00
|
|
|
:gravatar_enabled,
|
2017-08-07 04:53:30 -04:00
|
|
|
:hashed_storage_enabled,
|
2017-07-13 12:03:52 -04:00
|
|
|
:help_page_hide_commercial_content,
|
|
|
|
:help_page_support_url,
|
2020-10-05 14:08:51 -04:00
|
|
|
:help_page_documentation_base_url,
|
2017-07-13 12:03:52 -04:00
|
|
|
:help_page_text,
|
2018-07-30 06:16:54 -04:00
|
|
|
:hide_third_party_offers,
|
2017-07-13 12:03:52 -04:00
|
|
|
:home_page_url,
|
|
|
|
:housekeeping_enabled,
|
|
|
|
:housekeeping_full_repack_period,
|
|
|
|
:housekeeping_gc_period,
|
|
|
|
:housekeeping_incremental_repack_period,
|
|
|
|
:html_emails_enabled,
|
|
|
|
:import_sources,
|
2021-02-22 10:10:48 -05:00
|
|
|
:in_product_marketing_emails_enabled,
|
2022-04-12 11:08:32 -04:00
|
|
|
:inactive_projects_delete_after_months,
|
|
|
|
:inactive_projects_min_size_mb,
|
|
|
|
:inactive_projects_send_warning_email_after_months,
|
2021-01-12 10:10:37 -05:00
|
|
|
:invisible_captcha_enabled,
|
2022-05-30 14:08:57 -04:00
|
|
|
:jira_connect_application_key,
|
2017-07-13 12:03:52 -04:00
|
|
|
:max_artifacts_size,
|
|
|
|
:max_attachment_size,
|
2022-05-11 14:07:55 -04:00
|
|
|
:max_export_size,
|
2020-06-09 11:08:05 -04:00
|
|
|
:max_import_size,
|
2017-07-13 12:03:52 -04:00
|
|
|
:max_pages_size,
|
2021-08-31 23:11:03 -04:00
|
|
|
:max_yaml_size_bytes,
|
|
|
|
:max_yaml_depth,
|
2017-07-13 12:03:52 -04:00
|
|
|
:metrics_method_call_threshold,
|
2019-12-16 07:07:43 -05:00
|
|
|
:minimum_password_length,
|
2018-07-30 06:16:54 -04:00
|
|
|
:mirror_available,
|
2020-06-22 11:09:27 -04:00
|
|
|
:notify_on_unknown_sign_in,
|
2018-02-06 08:25:46 -05:00
|
|
|
:pages_domain_verification_enabled,
|
2017-11-23 08:16:14 -05:00
|
|
|
:password_authentication_enabled_for_web,
|
2018-01-19 07:04:45 -05:00
|
|
|
:password_authentication_enabled_for_git,
|
2018-05-25 12:44:15 -04:00
|
|
|
:performance_bar_allowed_group_path,
|
2017-07-13 12:03:52 -04:00
|
|
|
:performance_bar_enabled,
|
2020-12-15 10:09:59 -05:00
|
|
|
:personal_access_token_prefix,
|
2020-11-28 16:09:37 -05:00
|
|
|
:kroki_enabled,
|
|
|
|
:kroki_url,
|
2021-02-16 22:08:59 -05:00
|
|
|
:kroki_formats,
|
2017-07-13 12:03:52 -04:00
|
|
|
:plantuml_enabled,
|
|
|
|
:plantuml_url,
|
|
|
|
:polling_interval_multiplier,
|
2017-07-31 17:34:47 -04:00
|
|
|
:project_export_enabled,
|
2017-07-13 12:03:52 -04:00
|
|
|
:prometheus_metrics_enabled,
|
|
|
|
:recaptcha_enabled,
|
|
|
|
:recaptcha_private_key,
|
|
|
|
:recaptcha_site_key,
|
2019-07-18 04:27:02 -04:00
|
|
|
:login_recaptcha_protection_enabled,
|
2018-08-01 10:47:14 -04:00
|
|
|
:receive_max_input_size,
|
2017-07-13 12:03:52 -04:00
|
|
|
:repository_checks_enabled,
|
2020-07-21 20:09:26 -04:00
|
|
|
:repository_storages_weighted,
|
2020-10-02 17:08:18 -04:00
|
|
|
:require_admin_approval_after_user_signup,
|
2017-07-13 12:03:52 -04:00
|
|
|
:require_two_factor_authentication,
|
|
|
|
:restricted_visibility_levels,
|
2017-08-25 09:08:48 -04:00
|
|
|
:rsa_key_restriction,
|
2017-07-13 12:03:52 -04:00
|
|
|
:send_user_confirmation_email,
|
|
|
|
:session_expire_delay,
|
|
|
|
:shared_runners_enabled,
|
|
|
|
:shared_runners_text,
|
|
|
|
:sign_in_text,
|
|
|
|
:signup_enabled,
|
2019-11-15 13:06:24 -05:00
|
|
|
:sourcegraph_enabled,
|
|
|
|
:sourcegraph_url,
|
|
|
|
:sourcegraph_public_only,
|
2020-05-22 05:08:09 -04:00
|
|
|
:spam_check_endpoint_enabled,
|
|
|
|
:spam_check_endpoint_url,
|
2021-04-30 14:10:09 -04:00
|
|
|
:spam_check_api_key,
|
2017-07-13 12:03:52 -04:00
|
|
|
:terminal_max_session_time,
|
2018-07-30 06:16:54 -04:00
|
|
|
:terms,
|
2017-09-15 13:31:32 -04:00
|
|
|
:throttle_authenticated_api_enabled,
|
|
|
|
:throttle_authenticated_api_period_in_seconds,
|
2018-07-31 12:21:12 -04:00
|
|
|
:throttle_authenticated_api_requests_per_period,
|
2021-09-01 14:08:49 -04:00
|
|
|
:throttle_authenticated_git_lfs_enabled,
|
|
|
|
:throttle_authenticated_git_lfs_period_in_seconds,
|
|
|
|
:throttle_authenticated_git_lfs_requests_per_period,
|
2018-07-31 12:21:12 -04:00
|
|
|
:throttle_authenticated_web_enabled,
|
|
|
|
:throttle_authenticated_web_period_in_seconds,
|
|
|
|
:throttle_authenticated_web_requests_per_period,
|
2021-04-21 11:09:35 -04:00
|
|
|
:throttle_authenticated_packages_api_enabled,
|
|
|
|
:throttle_authenticated_packages_api_period_in_seconds,
|
|
|
|
:throttle_authenticated_packages_api_requests_per_period,
|
2021-08-26 20:08:45 -04:00
|
|
|
:throttle_authenticated_files_api_enabled,
|
|
|
|
:throttle_authenticated_files_api_period_in_seconds,
|
|
|
|
:throttle_authenticated_files_api_requests_per_period,
|
2021-09-28 08:11:10 -04:00
|
|
|
:throttle_authenticated_deprecated_api_enabled,
|
|
|
|
:throttle_authenticated_deprecated_api_period_in_seconds,
|
|
|
|
:throttle_authenticated_deprecated_api_requests_per_period,
|
2021-09-13 11:10:34 -04:00
|
|
|
:throttle_unauthenticated_api_enabled,
|
|
|
|
:throttle_unauthenticated_api_period_in_seconds,
|
|
|
|
:throttle_unauthenticated_api_requests_per_period,
|
2018-07-31 12:21:12 -04:00
|
|
|
:throttle_unauthenticated_enabled,
|
|
|
|
:throttle_unauthenticated_period_in_seconds,
|
|
|
|
:throttle_unauthenticated_requests_per_period,
|
2021-04-21 11:09:35 -04:00
|
|
|
:throttle_unauthenticated_packages_api_enabled,
|
|
|
|
:throttle_unauthenticated_packages_api_period_in_seconds,
|
|
|
|
:throttle_unauthenticated_packages_api_requests_per_period,
|
2021-08-26 20:08:45 -04:00
|
|
|
:throttle_unauthenticated_files_api_enabled,
|
|
|
|
:throttle_unauthenticated_files_api_period_in_seconds,
|
|
|
|
:throttle_unauthenticated_files_api_requests_per_period,
|
2021-09-28 08:11:10 -04:00
|
|
|
:throttle_unauthenticated_deprecated_api_enabled,
|
|
|
|
:throttle_unauthenticated_deprecated_api_period_in_seconds,
|
|
|
|
:throttle_unauthenticated_deprecated_api_requests_per_period,
|
2019-09-26 17:06:29 -04:00
|
|
|
:throttle_protected_paths_enabled,
|
|
|
|
:throttle_protected_paths_period_in_seconds,
|
|
|
|
:throttle_protected_paths_requests_per_period,
|
|
|
|
:protected_paths_raw,
|
2019-06-11 06:40:01 -04:00
|
|
|
:time_tracking_limit_to_hours,
|
2017-07-13 12:03:52 -04:00
|
|
|
:two_factor_grace_period,
|
|
|
|
:unique_ips_limit_enabled,
|
|
|
|
:unique_ips_limit_per_user,
|
|
|
|
:unique_ips_limit_time_window,
|
|
|
|
:usage_ping_enabled,
|
2021-06-30 05:08:07 -04:00
|
|
|
:usage_ping_features_enabled,
|
2017-07-13 12:03:52 -04:00
|
|
|
:user_default_external,
|
2018-08-03 16:52:01 -04:00
|
|
|
:user_show_add_ssh_key_message,
|
2018-08-30 08:53:06 -04:00
|
|
|
:user_default_internal_regex,
|
2017-07-13 12:03:52 -04:00
|
|
|
:user_oauth_applications,
|
2018-06-13 12:06:35 -04:00
|
|
|
:version_check_enabled,
|
2018-09-24 11:30:49 -04:00
|
|
|
:web_ide_clientside_preview_enabled,
|
2018-11-07 06:00:21 -05:00
|
|
|
:diff_max_patch_bytes,
|
2021-06-15 02:10:17 -04:00
|
|
|
:diff_max_files,
|
|
|
|
:diff_max_lines,
|
2018-10-31 15:12:22 -04:00
|
|
|
:commit_email_hostname,
|
2019-01-31 06:28:31 -05:00
|
|
|
:protected_ci_variables,
|
2019-08-14 15:21:58 -04:00
|
|
|
:local_markdown_version,
|
2021-06-29 14:07:04 -04:00
|
|
|
:mailgun_signing_key,
|
|
|
|
:mailgun_events_enabled,
|
2019-08-14 15:21:58 -04:00
|
|
|
:snowplow_collector_hostname,
|
|
|
|
:snowplow_cookie_domain,
|
|
|
|
:snowplow_enabled,
|
2019-11-08 16:06:38 -05:00
|
|
|
:snowplow_app_id,
|
2019-10-17 08:07:33 -04:00
|
|
|
:push_event_hooks_limit,
|
2019-10-17 17:06:41 -04:00
|
|
|
:push_event_activities_limit,
|
2019-12-02 07:06:45 -05:00
|
|
|
:custom_http_clone_url_root,
|
2020-02-19 22:08:57 -05:00
|
|
|
:snippet_size_limit,
|
|
|
|
:email_restrictions_enabled,
|
2020-04-22 05:09:36 -04:00
|
|
|
:email_restrictions,
|
2020-04-28 20:09:38 -04:00
|
|
|
:issues_create_limit,
|
2021-02-09 16:09:19 -05:00
|
|
|
:notes_create_limit,
|
2021-02-11 07:08:52 -05:00
|
|
|
:notes_create_limit_allowlist_raw,
|
2020-07-07 11:08:49 -04:00
|
|
|
:raw_blob_request_limit,
|
|
|
|
:project_import_limit,
|
|
|
|
:project_export_limit,
|
|
|
|
:project_download_export_limit,
|
|
|
|
:group_import_limit,
|
|
|
|
:group_export_limit,
|
2020-07-17 11:09:13 -04:00
|
|
|
:group_download_export_limit,
|
2020-09-02 05:10:23 -04:00
|
|
|
:wiki_page_max_content_bytes,
|
2021-01-04 07:10:44 -05:00
|
|
|
:container_registry_delete_tags_service_timeout,
|
2021-02-01 10:08:56 -05:00
|
|
|
:rate_limiting_response_text,
|
2022-07-18 11:09:08 -04:00
|
|
|
:package_registry_cleanup_policies_worker_capacity,
|
2021-02-01 10:08:56 -05:00
|
|
|
:container_registry_expiration_policies_worker_capacity,
|
2021-02-09 04:09:19 -05:00
|
|
|
:container_registry_cleanup_tags_service_max_list_size,
|
2022-01-19 13:14:01 -05:00
|
|
|
:container_registry_import_max_tags_count,
|
|
|
|
:container_registry_import_max_retries,
|
|
|
|
:container_registry_import_start_max_retries,
|
|
|
|
:container_registry_import_max_step_duration,
|
2022-05-25 20:08:24 -04:00
|
|
|
:container_registry_pre_import_tags_rate,
|
2022-05-12 11:08:59 -04:00
|
|
|
:container_registry_pre_import_timeout,
|
|
|
|
:container_registry_import_timeout,
|
2022-01-19 13:14:01 -05:00
|
|
|
:container_registry_import_target_plan,
|
|
|
|
:container_registry_import_created_before,
|
2021-04-27 11:09:52 -04:00
|
|
|
:keep_latest_artifact,
|
2021-09-07 02:11:06 -04:00
|
|
|
:whats_new_variant,
|
2021-09-13 14:11:46 -04:00
|
|
|
:user_deactivation_emails_enabled,
|
2021-11-08 13:09:52 -05:00
|
|
|
:sentry_enabled,
|
|
|
|
:sentry_dsn,
|
|
|
|
:sentry_clientside_dsn,
|
|
|
|
:sentry_environment,
|
2021-09-13 14:11:46 -04:00
|
|
|
:sidekiq_job_limiter_mode,
|
|
|
|
:sidekiq_job_limiter_compression_threshold_bytes,
|
2021-09-28 05:11:19 -04:00
|
|
|
:sidekiq_job_limiter_limit_bytes,
|
2021-12-20 13:13:27 -05:00
|
|
|
:suggest_pipeline_enabled,
|
2022-03-14 02:07:47 -04:00
|
|
|
:search_rate_limit,
|
|
|
|
:search_rate_limit_unauthenticated,
|
2022-02-08 13:16:03 -05:00
|
|
|
:users_get_by_id_limit,
|
2022-02-16 10:14:05 -05:00
|
|
|
:users_get_by_id_limit_allowlist_raw,
|
|
|
|
:runner_token_expiration_interval,
|
|
|
|
:group_runner_token_expiration_interval,
|
2022-05-16 11:08:39 -04:00
|
|
|
:project_runner_token_expiration_interval,
|
2022-08-23 17:10:34 -04:00
|
|
|
:pipeline_limit_per_project_user_sha,
|
|
|
|
:invitation_flow_enforcement
|
2021-06-03 14:09:58 -04:00
|
|
|
].tap do |settings|
|
2022-08-25 11:12:14 -04:00
|
|
|
next if Gitlab.com?
|
|
|
|
|
|
|
|
settings << :deactivate_dormant_users
|
|
|
|
settings << :deactivate_dormant_users_period
|
2021-06-03 14:09:58 -04:00
|
|
|
end
|
2017-07-13 12:03:52 -04:00
|
|
|
end
|
2018-09-19 06:57:57 -04:00
|
|
|
|
2019-04-09 11:38:58 -04:00
|
|
|
def external_authorization_service_attributes
|
|
|
|
[
|
|
|
|
:external_auth_client_cert,
|
|
|
|
:external_auth_client_key,
|
|
|
|
:external_auth_client_key_pass,
|
|
|
|
:external_authorization_service_default_label,
|
|
|
|
:external_authorization_service_enabled,
|
|
|
|
:external_authorization_service_timeout,
|
|
|
|
:external_authorization_service_url
|
|
|
|
]
|
|
|
|
end
|
|
|
|
|
2021-02-03 01:10:04 -05:00
|
|
|
# ok to remove in REST API v5
|
2020-09-25 20:09:35 -04:00
|
|
|
def deprecated_attributes
|
|
|
|
[
|
2021-02-03 01:10:04 -05:00
|
|
|
:admin_notification_email,
|
|
|
|
:asset_proxy_whitelist
|
2020-09-25 20:09:35 -04:00
|
|
|
]
|
|
|
|
end
|
|
|
|
|
2018-09-19 06:57:57 -04:00
|
|
|
def expanded_by_default?
|
|
|
|
Rails.env.test?
|
|
|
|
end
|
2019-05-01 21:07:38 -04:00
|
|
|
|
2019-11-04 01:06:46 -05:00
|
|
|
def integration_expanded?(substring)
|
2021-04-23 05:10:03 -04:00
|
|
|
@application_setting.errors.messages.any? { |k, _| k.to_s.start_with?(substring) }
|
2019-11-04 01:06:46 -05:00
|
|
|
end
|
|
|
|
|
2019-05-01 21:07:38 -04:00
|
|
|
def instance_clusters_enabled?
|
2022-03-14 14:07:46 -04:00
|
|
|
clusterable = Clusters::Instance.new
|
|
|
|
|
2022-05-05 05:08:00 -04:00
|
|
|
clusterable.certificate_based_clusters_enabled? &&
|
2022-03-14 14:07:46 -04:00
|
|
|
can?(current_user, :read_cluster, clusterable)
|
2019-05-01 21:07:38 -04:00
|
|
|
end
|
2019-09-26 17:06:29 -04:00
|
|
|
|
|
|
|
def omnibus_protected_paths_throttle?
|
|
|
|
Rack::Attack.throttles.key?('protected paths')
|
|
|
|
end
|
2020-01-08 04:07:53 -05:00
|
|
|
|
|
|
|
def self_monitoring_project_data
|
|
|
|
{
|
|
|
|
'create_self_monitoring_project_path' =>
|
|
|
|
create_self_monitoring_project_admin_application_settings_path,
|
|
|
|
|
|
|
|
'status_create_self_monitoring_project_path' =>
|
|
|
|
status_create_self_monitoring_project_admin_application_settings_path,
|
|
|
|
|
2020-01-13 10:07:53 -05:00
|
|
|
'delete_self_monitoring_project_path' =>
|
|
|
|
delete_self_monitoring_project_admin_application_settings_path,
|
|
|
|
|
|
|
|
'status_delete_self_monitoring_project_path' =>
|
|
|
|
status_delete_self_monitoring_project_admin_application_settings_path,
|
|
|
|
|
2020-01-08 04:07:53 -05:00
|
|
|
'self_monitoring_project_exists' =>
|
2020-01-28 10:08:36 -05:00
|
|
|
Gitlab::CurrentSettings.self_monitoring_project.present?.to_s,
|
2020-01-08 04:07:53 -05:00
|
|
|
|
|
|
|
'self_monitoring_project_full_path' =>
|
2020-01-28 10:08:36 -05:00
|
|
|
Gitlab::CurrentSettings.self_monitoring_project&.full_path
|
2020-01-08 04:07:53 -05:00
|
|
|
}
|
|
|
|
end
|
2020-10-05 14:08:51 -04:00
|
|
|
|
2021-06-21 17:08:33 -04:00
|
|
|
def valid_runner_registrars
|
|
|
|
Gitlab::CurrentSettings.valid_runner_registrars
|
|
|
|
end
|
|
|
|
|
2020-11-16 04:09:18 -05:00
|
|
|
def signup_enabled?
|
|
|
|
!!Gitlab::CurrentSettings.signup_enabled
|
|
|
|
end
|
2021-07-27 08:10:54 -04:00
|
|
|
|
|
|
|
def pending_user_count
|
|
|
|
User.blocked_pending_approval.count
|
|
|
|
end
|
2022-01-06 07:14:04 -05:00
|
|
|
|
|
|
|
def registration_features_can_be_prompted?
|
|
|
|
!Gitlab::CurrentSettings.usage_ping_enabled?
|
|
|
|
end
|
2022-06-10 02:09:50 -04:00
|
|
|
|
|
|
|
def signup_form_data
|
|
|
|
{
|
|
|
|
host: new_user_session_url(host: Gitlab.config.gitlab.host),
|
|
|
|
settings_path: general_admin_application_settings_path(anchor: 'js-signup-settings'),
|
|
|
|
signup_enabled: @application_setting[:signup_enabled].to_s,
|
|
|
|
require_admin_approval_after_user_signup: @application_setting[:require_admin_approval_after_user_signup].to_s,
|
|
|
|
send_user_confirmation_email: @application_setting[:send_user_confirmation_email].to_s,
|
|
|
|
minimum_password_length: @application_setting[:minimum_password_length],
|
|
|
|
minimum_password_length_min: ApplicationSetting::DEFAULT_MINIMUM_PASSWORD_LENGTH,
|
|
|
|
minimum_password_length_max: Devise.password_length.max,
|
|
|
|
minimum_password_length_help_link:
|
|
|
|
'https://about.gitlab.com/handbook/security/#gitlab-password-policy-guidelines',
|
|
|
|
domain_allowlist_raw: @application_setting.domain_allowlist_raw,
|
|
|
|
new_user_signups_cap: @application_setting[:new_user_signups_cap].to_s,
|
|
|
|
domain_denylist_enabled: @application_setting[:domain_denylist_enabled].to_s,
|
|
|
|
denylist_type_raw_selected:
|
|
|
|
(@application_setting.domain_denylist.present? || @application_setting.domain_denylist.blank?).to_s,
|
|
|
|
domain_denylist_raw: @application_setting.domain_denylist_raw,
|
|
|
|
email_restrictions_enabled: @application_setting[:email_restrictions_enabled].to_s,
|
|
|
|
supported_syntax_link_url: 'https://github.com/google/re2/wiki/Syntax',
|
|
|
|
email_restrictions: @application_setting.email_restrictions.to_s,
|
|
|
|
after_sign_up_text: @application_setting[:after_sign_up_text].to_s,
|
|
|
|
pending_user_count: pending_user_count
|
|
|
|
}
|
|
|
|
end
|
2015-01-08 03:22:50 -05:00
|
|
|
end
|
2019-09-13 09:26:31 -04:00
|
|
|
|
2021-05-11 17:10:21 -04:00
|
|
|
ApplicationSettingsHelper.prepend_mod_with('ApplicationSettingsHelper')
|
2019-09-13 09:26:31 -04:00
|
|
|
|
|
|
|
# The methods in `EE::ApplicationSettingsHelper` should be available as both
|
|
|
|
# instance and class methods.
|
2021-05-11 17:10:21 -04:00
|
|
|
ApplicationSettingsHelper.extend_mod_with('ApplicationSettingsHelper')
|