debian-mirror-gitlab/app/helpers/application_settings_helper.rb

266 lines
8.6 KiB
Ruby
Raw Normal View History

2018-12-05 23:21:45 +05:30
# frozen_string_literal: true
2015-04-26 12:48:37 +05:30
module ApplicationSettingsHelper
2017-09-10 17:25:29 +05:30
extend self
2018-03-17 18:26:18 +05:30
delegate :allow_signup?,
:gravatar_enabled?,
:password_authentication_enabled_for_web?,
2017-08-17 22:00:37 +05:30
:akismet_enabled?,
:koding_enabled?,
2018-03-17 18:26:18 +05:30
to: :'Gitlab::CurrentSettings.current_application_settings'
2015-04-26 12:48:37 +05:30
2015-09-11 14:41:01 +05:30
def user_oauth_applications?
2018-03-17 18:26:18 +05:30
Gitlab::CurrentSettings.user_oauth_applications
2015-09-11 14:41:01 +05:30
end
2016-08-24 12:49:21 +05:30
def allowed_protocols_present?
2018-03-17 18:26:18 +05:30
Gitlab::CurrentSettings.enabled_git_access_protocol.present?
2016-08-24 12:49:21 +05:30
end
def enabled_protocol
2018-03-17 18:26:18 +05:30
case Gitlab::CurrentSettings.enabled_git_access_protocol
2016-08-24 12:49:21 +05:30
when 'http'
gitlab_config.protocol
when 'ssh'
'ssh'
end
end
def enabled_project_button(project, protocol)
case protocol
when 'ssh'
2018-03-17 18:26:18 +05:30
ssh_clone_button(project, append_link: false)
2016-08-24 12:49:21 +05:30
else
2018-03-17 18:26:18 +05:30
http_clone_button(project, append_link: false)
2016-08-24 12:49:21 +05:30
end
end
2015-04-26 12:48:37 +05:30
# Return a group of checkboxes that use Bootstrap's button plugin for a
# toggle button effect.
2018-11-08 19:23:39 +05:30
def restricted_level_checkboxes(help_block_id, checkbox_name, options = {})
2017-09-10 17:25:29 +05:30
Gitlab::VisibilityLevel.values.map do |level|
2015-04-26 12:48:37 +05:30
checked = restricted_visibility_levels(true).include?(level)
2017-08-17 22:00:37 +05:30
css_class = checked ? 'active' : ''
2017-09-10 17:25:29 +05:30
tag_name = "application_setting_visibility_level_#{level}"
2015-04-26 12:48:37 +05:30
2017-09-10 17:25:29 +05:30
label_tag(tag_name, class: css_class) do
2015-04-26 12:48:37 +05:30
check_box_tag(checkbox_name, level, checked,
autocomplete: 'off',
2017-08-17 22:00:37 +05:30
'aria-describedby' => help_block_id,
2018-11-08 19:23:39 +05:30
'class' => options[:class],
2017-09-10 17:25:29 +05:30
id: tag_name) + visibility_level_icon(level) + visibility_level_label(level)
2015-04-26 12:48:37 +05:30
end
end
end
2015-09-25 12:07:36 +05:30
# Return a group of checkboxes that use Bootstrap's button plugin for a
# toggle button effect.
2018-11-08 19:23:39 +05:30
def import_sources_checkboxes(help_block_id, options = {})
2015-09-25 12:07:36 +05:30
Gitlab::ImportSources.options.map do |name, source|
2018-03-17 18:26:18 +05:30
checked = Gitlab::CurrentSettings.import_sources.include?(source)
2017-08-17 22:00:37 +05:30
css_class = checked ? 'active' : ''
2015-09-25 12:07:36 +05:30
checkbox_name = 'application_setting[import_sources][]'
2017-08-17 22:00:37 +05:30
label_tag(name, class: css_class) do
2015-09-25 12:07:36 +05:30
check_box_tag(checkbox_name, source, checked,
autocomplete: 'off',
2017-08-17 22:00:37 +05:30
'aria-describedby' => help_block_id,
2018-11-08 19:23:39 +05:30
'class' => options[:class],
2017-08-17 22:00:37 +05:30
id: name.tr(' ', '_')) + name
2015-09-25 12:07:36 +05:30
end
end
end
2016-06-02 11:05:42 +05:30
def oauth_providers_checkboxes
button_based_providers.map do |source|
2018-03-17 18:26:18 +05:30
disabled = Gitlab::CurrentSettings.disabled_oauth_sign_in_sources.include?(source.to_s)
2018-12-05 23:21:45 +05:30
css_class = ['btn']
css_class << 'active' unless disabled
2016-06-02 11:05:42 +05:30
checkbox_name = 'application_setting[enabled_oauth_sign_in_sources][]'
2018-05-09 12:01:36 +05:30
name = Gitlab::Auth::OAuth::Provider.label_for(source)
2016-06-02 11:05:42 +05:30
2018-12-05 23:21:45 +05:30
label_tag(checkbox_name, class: css_class.join(' ')) do
2016-06-02 11:05:42 +05:30
check_box_tag(checkbox_name, source, !disabled,
2018-05-09 12:01:36 +05:30
autocomplete: 'off',
id: name.tr(' ', '_')) + name
2016-06-02 11:05:42 +05:30
end
end
end
2016-08-24 12:49:21 +05:30
2018-03-17 18:26:18 +05:30
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]
end
[
['Are allowed', 0],
*bit_size_options,
['Are forbidden', ApplicationSetting::FORBIDDEN_KEY_VALUE]
]
end
def repository_storages_options_for_select(selected)
2017-08-17 22:00:37 +05:30
options = Gitlab.config.repositories.storages.map do |name, storage|
2018-05-09 12:01:36 +05:30
["#{name} - #{storage['gitaly_address']}", name]
2016-08-24 12:49:21 +05:30
end
2018-03-17 18:26:18 +05:30
options_for_select(options, selected)
2016-08-24 12:49:21 +05:30
end
2017-08-17 22:00:37 +05:30
2018-03-17 18:26:18 +05:30
def circuitbreaker_failure_count_help_text
health_link = link_to(s_('AdminHealthPageLink|health page'), admin_health_check_path)
api_link = link_to(s_('CircuitBreakerApiLink|circuitbreaker api'), help_page_path("api/repository_storage_health"))
message = _("The number of failures of after which GitLab will completely "\
"prevent access to the storage. The number of failures can be "\
"reset in the admin interface: %{link_to_health_page} or using "\
"the %{api_documentation_link}.")
message = message % { link_to_health_page: health_link, api_documentation_link: api_link }
message.html_safe
end
def circuitbreaker_access_retries_help_text
_('The number of attempts GitLab will make to access a storage.')
end
def circuitbreaker_failure_reset_time_help_text
_("The time in seconds GitLab will keep failure information. When no "\
"failures occur during this time, information about the mount is reset.")
end
def circuitbreaker_storage_timeout_help_text
_("The time in seconds GitLab will try to access storage. After this time a "\
"timeout error will be raised.")
end
def circuitbreaker_check_interval_help_text
_("The time in seconds between storage checks. When a previous check did "\
"complete yet, GitLab will skip a check.")
end
2017-09-10 17:25:29 +05:30
def visible_attributes
[
:admin_notification_email,
:after_sign_out_path,
:after_sign_up_text,
:akismet_api_key,
:akismet_enabled,
2018-11-18 11:00:15 +05:30
:allow_local_requests_from_hooks_and_services,
2018-03-17 18:26:18 +05:30
:authorized_keys_enabled,
:auto_devops_enabled,
:auto_devops_domain,
:circuitbreaker_access_retries,
:circuitbreaker_check_interval,
:circuitbreaker_failure_count_threshold,
:circuitbreaker_failure_reset_time,
:circuitbreaker_storage_timeout,
2017-09-10 17:25:29 +05:30
:clientside_sentry_dsn,
:clientside_sentry_enabled,
:container_registry_token_expire_delay,
:default_artifacts_expire_in,
:default_branch_protection,
:default_group_visibility,
:default_project_visibility,
:default_projects_limit,
:default_snippet_visibility,
:disabled_oauth_sign_in_sources,
:domain_blacklist_enabled,
:domain_blacklist_raw,
:domain_whitelist_raw,
2018-03-17 18:26:18 +05:30
:dsa_key_restriction,
:ecdsa_key_restriction,
:ed25519_key_restriction,
2017-09-10 17:25:29 +05:30
:email_author_in_body,
:enabled_git_access_protocol,
2018-11-18 11:00:15 +05:30
:enforce_terms,
2018-03-17 18:26:18 +05:30
:gitaly_timeout_default,
:gitaly_timeout_medium,
:gitaly_timeout_fast,
2017-09-10 17:25:29 +05:30
:gravatar_enabled,
2018-03-17 18:26:18 +05:30
:hashed_storage_enabled,
2017-09-10 17:25:29 +05:30
:help_page_hide_commercial_content,
:help_page_support_url,
:help_page_text,
2018-11-18 11:00:15 +05:30
:hide_third_party_offers,
2017-09-10 17:25:29 +05:30
:home_page_url,
:housekeeping_bitmaps_enabled,
:housekeeping_enabled,
:housekeeping_full_repack_period,
:housekeeping_gc_period,
:housekeeping_incremental_repack_period,
:html_emails_enabled,
:import_sources,
:koding_enabled,
:koding_url,
:max_artifacts_size,
:max_attachment_size,
:max_pages_size,
:metrics_enabled,
:metrics_host,
:metrics_method_call_threshold,
:metrics_packet_size,
:metrics_pool_size,
:metrics_port,
:metrics_sample_interval,
:metrics_timeout,
2018-11-18 11:00:15 +05:30
:mirror_available,
2018-03-17 18:26:18 +05:30
:pages_domain_verification_enabled,
:password_authentication_enabled_for_web,
:password_authentication_enabled_for_git,
2018-11-08 19:23:39 +05:30
:performance_bar_allowed_group_path,
2017-09-10 17:25:29 +05:30
:performance_bar_enabled,
:plantuml_enabled,
:plantuml_url,
:polling_interval_multiplier,
2018-03-17 18:26:18 +05:30
:project_export_enabled,
2017-09-10 17:25:29 +05:30
:prometheus_metrics_enabled,
:recaptcha_enabled,
:recaptcha_private_key,
:recaptcha_site_key,
2018-11-20 20:47:30 +05:30
:receive_max_input_size,
2017-09-10 17:25:29 +05:30
:repository_checks_enabled,
:repository_storages,
:require_two_factor_authentication,
:restricted_visibility_levels,
2018-03-17 18:26:18 +05:30
:rsa_key_restriction,
2017-09-10 17:25:29 +05:30
:send_user_confirmation_email,
:sentry_dsn,
:sentry_enabled,
:session_expire_delay,
:shared_runners_enabled,
:shared_runners_text,
:sign_in_text,
:signup_enabled,
:terminal_max_session_time,
2018-11-18 11:00:15 +05:30
:terms,
2018-03-17 18:26:18 +05:30
:throttle_authenticated_api_enabled,
:throttle_authenticated_api_period_in_seconds,
2018-11-18 11:00:15 +05:30
:throttle_authenticated_api_requests_per_period,
:throttle_authenticated_web_enabled,
:throttle_authenticated_web_period_in_seconds,
:throttle_authenticated_web_requests_per_period,
:throttle_unauthenticated_enabled,
:throttle_unauthenticated_period_in_seconds,
:throttle_unauthenticated_requests_per_period,
2017-09-10 17:25:29 +05:30
:two_factor_grace_period,
:unique_ips_limit_enabled,
:unique_ips_limit_per_user,
:unique_ips_limit_time_window,
:usage_ping_enabled,
2018-11-18 11:00:15 +05:30
:instance_statistics_visibility_private,
2017-09-10 17:25:29 +05:30
:user_default_external,
2018-11-20 20:47:30 +05:30
:user_show_add_ssh_key_message,
:user_default_internal_regex,
2017-09-10 17:25:29 +05:30
:user_oauth_applications,
2018-03-26 14:24:53 +05:30
:version_check_enabled,
2018-12-05 23:21:45 +05:30
:web_ide_clientside_preview_enabled,
:diff_max_patch_bytes
2017-09-10 17:25:29 +05:30
]
end
2018-12-05 23:21:45 +05:30
def expanded_by_default?
Rails.env.test?
end
2015-04-26 12:48:37 +05:30
end