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

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

610 lines
21 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
2019-12-26 22:10:19 +05:30
delegate :allow_signup?,
:gravatar_enabled?,
:password_authentication_enabled_for_web?,
:akismet_enabled?,
2022-10-11 01:57:18 +05:30
:spam_check_endpoint_enabled?,
2019-12-26 22:10:19 +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'
2019-02-15 15:39:39 +05:30
Gitlab.config.gitlab.protocol
2016-08-24 12:49:21 +05:30
when 'ssh'
'ssh'
end
end
2021-03-11 19:13:27 +05:30
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-23 00:09:42 +05:30
def storage_weights
2022-06-21 17:19:12 +05:30
# 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-23 00:09:42 +05:30
end
2022-06-21 17:19:12 +05:30
weights.new(*values)
2020-06-23 00:09:42 +05:30
end
2019-02-15 15:39:39 +05:30
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?
all_protocols_enabled? || Gitlab::CurrentSettings.enabled_git_access_protocol == 'http'
end
2022-10-11 01:57:18 +05:30
def anti_spam_service_enabled?
akismet_enabled? || spam_check_endpoint_enabled?
end
2021-02-22 17:27:13 +05:30
def enabled_protocol_button(container, protocol)
2016-08-24 12:49:21 +05:30
case protocol
when 'ssh'
2021-02-22 17:27:13 +05:30
ssh_clone_button(container, append_link: false)
2016-08-24 12:49:21 +05:30
else
2021-02-22 17:27:13 +05:30
http_clone_button(container, append_link: false)
2016-08-24 12:49:21 +05:30
end
end
2022-06-21 17:19:12 +05:30
def restricted_level_checkboxes(form)
2023-04-23 21:23:45 +05:30
restricted_visibility_levels_help_text = {
Gitlab::VisibilityLevel::PUBLIC => s_(
'AdminSettings|If selected, only administrators are able to create public groups, projects, ' \
'and snippets. Also, profiles are only visible to authenticated users.'
),
Gitlab::VisibilityLevel::INTERNAL => s_(
'AdminSettings|If selected, only administrators are able to create internal groups, projects, and ' \
'snippets.'
),
Gitlab::VisibilityLevel::PRIVATE => s_(
'AdminSettings|If selected, only administrators are able to create private groups, projects, and ' \
'snippets.'
)
}
Gitlab::VisibilityLevel.options.map do |label, level|
2015-04-26 12:48:37 +05:30
checked = restricted_visibility_levels(true).include?(level)
2022-06-21 17:19:12 +05:30
form.gitlab_ui_checkbox_component(
:restricted_visibility_levels,
checkbox_options: { checked: checked, multiple: true, autocomplete: 'off' },
checked_value: level,
unchecked_value: nil
2023-04-23 21:23:45 +05:30
) do |c|
c.label do
visibility_level_icon(level) + content_tag(:span, label, { class: 'gl-ml-2' })
end
c.help_text do
restricted_visibility_levels_help_text.fetch(level)
end
end
2015-04-26 12:48:37 +05:30
end
end
2015-09-25 12:07:36 +05:30
2022-06-21 17:19:12 +05:30
def import_sources_checkboxes(form)
2015-09-25 12:07:36 +05:30
Gitlab::ImportSources.options.map do |name, source|
2019-09-30 21:07:59 +05:30
checked = @application_setting.import_sources.include?(source)
2022-06-21 17:19:12 +05:30
form.gitlab_ui_checkbox_component(
:import_sources,
name,
checkbox_options: { checked: checked, multiple: true, autocomplete: 'off' },
checked_value: source,
unchecked_value: nil
)
2015-09-25 12:07:36 +05:30
end
end
2016-06-02 11:05:42 +05:30
2022-07-16 23:28:13 +05:30
def oauth_providers_checkboxes(form)
2016-06-02 11:05:42 +05:30
button_based_providers.map do |source|
2022-07-16 23:28:13 +05:30
checked = !@application_setting.disabled_oauth_sign_in_sources.include?(source.to_s)
2018-05-09 12:01:36 +05:30
name = Gitlab::Auth::OAuth::Provider.label_for(source)
2022-07-16 23:28:13 +05:30
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-06-02 11:05:42 +05:30
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
2020-03-13 15:44:24 +05:30
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-07-07 11:18:12 +05:30
def external_authorization_description
2022-03-02 08:16:31 +05:30
s_("ExternalAuthorization|Access to projects is validated on an external service"\
2019-07-07 11:18:12 +05:30
" using their classification label.")
end
2023-04-23 21:23:45 +05:30
def external_authorization_allow_token_help_text
s_("ExternalAuthorization|Does not apply if service URL is specified.")
end
2019-07-07 11:18:12 +05:30
def external_authorization_timeout_help_text
2022-03-02 08:16:31 +05:30
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-07-07 11:18:12 +05:30
end
def external_authorization_url_help_text
2022-03-02 08:16:31 +05:30
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-07-07 11:18:12 +05:30
end
def external_authorization_client_certificate_help_text
2022-03-02 08:16:31 +05:30
s_("ExternalAuthorization|Certificate used to authenticate with the external authorization service. "\
"If blank, the server certificate is validated when accessing over HTTPS.")
2019-07-07 11:18:12 +05:30
end
def external_authorization_client_key_help_text
2022-03-02 08:16:31 +05:30
s_("ExternalAuthorization|Private key of client authentication certificate. "\
"Encrypted when stored.")
2019-07-07 11:18:12 +05:30
end
def external_authorization_client_pass_help_text
2022-03-02 08:16:31 +05:30
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-07-07 11:18:12 +05:30
end
2021-11-11 11:23:49 +05:30
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-09-10 17:25:29 +05:30
def visible_attributes
[
2021-01-03 14:25:43 +05:30
:abuse_notification_email,
2021-04-29 21:17:54 +05:30
:admin_mode,
2017-09-10 17:25:29 +05:30
: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,
2019-10-12 21:52:04 +05:30
:allow_local_requests_from_web_hooks_and_services,
:allow_local_requests_from_system_hooks,
2023-04-23 21:23:45 +05:30
:allow_possible_spam,
2019-06-05 12:25:43 +05:30
:dns_rebinding_protection_enabled,
2018-12-13 13:39:08 +05:30
:archive_builds_in_human_readable,
2019-09-04 21:01:54 +05:30
:asset_proxy_enabled,
:asset_proxy_secret_key,
:asset_proxy_url,
2021-03-11 19:13:27 +05:30
:asset_proxy_allowlist,
2019-12-04 20:38:33 +05:30
:static_objects_external_storage_auth_token,
:static_objects_external_storage_url,
2018-03-17 18:26:18 +05:30
:authorized_keys_enabled,
:auto_devops_enabled,
:auto_devops_domain,
2020-04-22 19:07:51 +05:30
:container_expiration_policies_enable_historic_entries,
2022-05-07 20:08:51 +05:30
:container_registry_expiration_policies_caching,
2017-09-10 17:25:29 +05:30
:container_registry_token_expire_delay,
:default_artifacts_expire_in,
2020-07-28 23:09:34 +05:30
:default_branch_name,
2017-09-10 17:25:29 +05:30
:default_branch_protection,
2019-12-26 22:10:19 +05:30
:default_ci_config_path,
2017-09-10 17:25:29 +05:30
:default_group_visibility,
2023-03-04 22:38:38 +05:30
:default_preferred_language,
2019-07-07 11:18:12 +05:30
:default_project_creation,
2017-09-10 17:25:29 +05:30
:default_project_visibility,
:default_projects_limit,
:default_snippet_visibility,
2022-06-21 17:19:12 +05:30
:delete_inactive_projects,
2023-01-13 00:05:48 +05:30
:disable_admin_oauth_scopes,
2021-02-22 17:27:13 +05:30
:disable_feed_token,
2017-09-10 17:25:29 +05:30
:disabled_oauth_sign_in_sources,
2021-01-29 00:20:46 +05:30
:domain_denylist,
:domain_denylist_enabled,
# TODO Remove domain_denylist_raw in APIv5 (See https://gitlab.com/gitlab-org/gitlab-foss/issues/67204)
:domain_denylist_raw,
:domain_allowlist,
# 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,
2018-03-17 18:26:18 +05:30
:dsa_key_restriction,
:ecdsa_key_restriction,
2022-04-04 11:22:00 +05:30
:ecdsa_sk_key_restriction,
2018-03-17 18:26:18 +05:30
:ed25519_key_restriction,
2022-04-04 11:22:00 +05:30
:ed25519_sk_key_restriction,
2019-12-26 22:10:19 +05:30
:eks_integration_enabled,
:eks_account_id,
:eks_access_key_id,
:eks_secret_access_key,
2017-09-10 17:25:29 +05:30
:email_author_in_body,
2023-01-13 00:05:48 +05:30
:email_confirmation_setting,
2017-09-10 17:25:29 +05:30
:enabled_git_access_protocol,
2018-11-18 11:00:15 +05:30
:enforce_terms,
2022-08-13 15:12:31 +05:30
:error_tracking_enabled,
:error_tracking_api_url,
2021-04-29 21:17:54 +05:30
:external_pipeline_validation_service_timeout,
:external_pipeline_validation_service_token,
:external_pipeline_validation_service_url,
2019-03-02 22:35:43 +05:30
:first_day_of_week,
2021-06-08 01:23:25 +05:30
:floc_enabled,
2020-03-13 15:44:24 +05:30
:force_pages_access_control,
2018-03-17 18:26:18 +05:30
:gitaly_timeout_default,
:gitaly_timeout_medium,
:gitaly_timeout_fast,
2020-11-24 15:15:51 +05:30
:gitpod_enabled,
:gitpod_url,
2019-09-30 21:07:59 +05:30
:grafana_enabled,
:grafana_url,
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,
2021-01-03 14:25:43 +05:30
:help_page_documentation_base_url,
2017-09-10 17:25:29 +05:30
: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_enabled,
:housekeeping_full_repack_period,
:housekeeping_gc_period,
:housekeeping_incremental_repack_period,
2023-03-17 16:20:25 +05:30
:housekeeping_optimize_repository_period,
2017-09-10 17:25:29 +05:30
:html_emails_enabled,
:import_sources,
2021-04-17 20:07:23 +05:30
:in_product_marketing_emails_enabled,
2022-06-21 17:19:12 +05:30
:inactive_projects_delete_after_months,
:inactive_projects_min_size_mb,
:inactive_projects_send_warning_email_after_months,
2021-03-08 18:12:59 +05:30
:invisible_captcha_enabled,
2022-07-23 23:45:48 +05:30
:jira_connect_application_key,
2023-04-23 21:23:45 +05:30
:jira_connect_public_key_storage_enabled,
2023-01-13 00:05:48 +05:30
:jira_connect_proxy_url,
2017-09-10 17:25:29 +05:30
:max_artifacts_size,
:max_attachment_size,
2022-07-16 23:28:13 +05:30
:max_export_size,
2020-06-23 00:09:42 +05:30
:max_import_size,
2017-09-10 17:25:29 +05:30
:max_pages_size,
2022-10-11 01:57:18 +05:30
:max_pages_custom_domains_per_project,
2023-03-04 22:38:38 +05:30
:max_terraform_state_size_bytes,
2021-11-11 11:23:49 +05:30
:max_yaml_size_bytes,
:max_yaml_depth,
2017-09-10 17:25:29 +05:30
:metrics_method_call_threshold,
2020-01-01 13:55:28 +05:30
:minimum_password_length,
2018-11-18 11:00:15 +05:30
:mirror_available,
2020-07-28 23:09:34 +05:30
:notify_on_unknown_sign_in,
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,
2021-02-22 17:27:13 +05:30
:personal_access_token_prefix,
:kroki_enabled,
:kroki_url,
2021-03-11 19:13:27 +05:30
:kroki_formats,
2017-09-10 17:25:29 +05:30
: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,
2019-09-04 21:01:54 +05:30
:login_recaptcha_protection_enabled,
2018-11-20 20:47:30 +05:30
:receive_max_input_size,
2017-09-10 17:25:29 +05:30
:repository_checks_enabled,
2020-08-09 18:53:13 +05:30
:repository_storages_weighted,
2021-01-03 14:25:43 +05:30
:require_admin_approval_after_user_signup,
2017-09-10 17:25:29 +05:30
: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
:session_expire_delay,
:shared_runners_enabled,
:shared_runners_text,
:sign_in_text,
:signup_enabled,
2019-12-26 22:10:19 +05:30
:sourcegraph_enabled,
:sourcegraph_url,
:sourcegraph_public_only,
2020-06-23 00:09:42 +05:30
:spam_check_endpoint_enabled,
:spam_check_endpoint_url,
2021-06-08 01:23:25 +05:30
:spam_check_api_key,
2017-09-10 17:25:29 +05:30
: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,
2021-11-11 11:23:49 +05:30
:throttle_authenticated_git_lfs_enabled,
:throttle_authenticated_git_lfs_period_in_seconds,
:throttle_authenticated_git_lfs_requests_per_period,
2018-11-18 11:00:15 +05:30
:throttle_authenticated_web_enabled,
:throttle_authenticated_web_period_in_seconds,
:throttle_authenticated_web_requests_per_period,
2021-06-08 01:23:25 +05:30
:throttle_authenticated_packages_api_enabled,
:throttle_authenticated_packages_api_period_in_seconds,
:throttle_authenticated_packages_api_requests_per_period,
2021-11-11 11:23:49 +05:30
:throttle_authenticated_files_api_enabled,
:throttle_authenticated_files_api_period_in_seconds,
:throttle_authenticated_files_api_requests_per_period,
2021-11-18 22:05:49 +05:30
:throttle_authenticated_deprecated_api_enabled,
:throttle_authenticated_deprecated_api_period_in_seconds,
:throttle_authenticated_deprecated_api_requests_per_period,
2021-11-11 11:23:49 +05:30
:throttle_unauthenticated_api_enabled,
:throttle_unauthenticated_api_period_in_seconds,
:throttle_unauthenticated_api_requests_per_period,
2018-11-18 11:00:15 +05:30
:throttle_unauthenticated_enabled,
:throttle_unauthenticated_period_in_seconds,
:throttle_unauthenticated_requests_per_period,
2021-06-08 01:23:25 +05:30
:throttle_unauthenticated_packages_api_enabled,
:throttle_unauthenticated_packages_api_period_in_seconds,
:throttle_unauthenticated_packages_api_requests_per_period,
2021-11-11 11:23:49 +05:30
:throttle_unauthenticated_files_api_enabled,
:throttle_unauthenticated_files_api_period_in_seconds,
:throttle_unauthenticated_files_api_requests_per_period,
2021-11-18 22:05:49 +05:30
:throttle_unauthenticated_deprecated_api_enabled,
:throttle_unauthenticated_deprecated_api_period_in_seconds,
:throttle_unauthenticated_deprecated_api_requests_per_period,
2019-12-21 20:55:43 +05:30
:throttle_protected_paths_enabled,
:throttle_protected_paths_period_in_seconds,
:throttle_protected_paths_requests_per_period,
:protected_paths_raw,
2019-09-30 21:07:59 +05:30
:time_tracking_limit_to_hours,
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,
2021-09-30 23:02:18 +05:30
:usage_ping_features_enabled,
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-13 13:39:08 +05:30
:diff_max_patch_bytes,
2021-09-04 01:27:46 +05:30
:diff_max_files,
:diff_max_lines,
2019-02-15 15:39:39 +05:30
:commit_email_hostname,
2019-03-02 22:35:43 +05:30
:protected_ci_variables,
2019-10-12 21:52:04 +05:30
:local_markdown_version,
2021-09-30 23:02:18 +05:30
:mailgun_signing_key,
:mailgun_events_enabled,
2019-10-12 21:52:04 +05:30
:snowplow_collector_hostname,
:snowplow_cookie_domain,
:snowplow_enabled,
2019-12-26 22:10:19 +05:30
:snowplow_app_id,
2019-12-21 20:55:43 +05:30
:push_event_hooks_limit,
:push_event_activities_limit,
2020-01-01 13:55:28 +05:30
:custom_http_clone_url_root,
2020-04-08 14:13:33 +05:30
:snippet_size_limit,
:email_restrictions_enabled,
2020-05-24 23:13:21 +05:30
:email_restrictions,
:issues_create_limit,
2021-03-11 19:13:27 +05:30
:notes_create_limit,
:notes_create_limit_allowlist_raw,
2020-07-28 23:09:34 +05:30
:raw_blob_request_limit,
:project_import_limit,
:project_export_limit,
:project_download_export_limit,
:group_import_limit,
:group_export_limit,
2020-10-24 23:57:45 +05:30
:group_download_export_limit,
2020-11-24 15:15:51 +05:30
:wiki_page_max_content_bytes,
2021-03-08 18:12:59 +05:30
:container_registry_delete_tags_service_timeout,
2021-03-11 19:13:27 +05:30
:rate_limiting_response_text,
2022-08-13 15:12:31 +05:30
:package_registry_cleanup_policies_worker_capacity,
2021-03-11 19:13:27 +05:30
:container_registry_expiration_policies_worker_capacity,
:container_registry_cleanup_tags_service_max_list_size,
2022-03-02 08:16:31 +05:30
:container_registry_import_max_tags_count,
:container_registry_import_max_retries,
:container_registry_import_start_max_retries,
:container_registry_import_max_step_duration,
2022-07-23 23:45:48 +05:30
:container_registry_pre_import_tags_rate,
2022-07-16 23:28:13 +05:30
:container_registry_pre_import_timeout,
:container_registry_import_timeout,
2022-03-02 08:16:31 +05:30
:container_registry_import_target_plan,
:container_registry_import_created_before,
2021-06-08 01:23:25 +05:30
:keep_latest_artifact,
2021-11-11 11:23:49 +05:30
:whats_new_variant,
:user_deactivation_emails_enabled,
2021-12-11 22:18:48 +05:30
:sentry_enabled,
:sentry_dsn,
:sentry_clientside_dsn,
:sentry_environment,
2021-11-11 11:23:49 +05:30
:sidekiq_job_limiter_mode,
:sidekiq_job_limiter_compression_threshold_bytes,
2021-11-18 22:05:49 +05:30
:sidekiq_job_limiter_limit_bytes,
2022-03-02 08:16:31 +05:30
:suggest_pipeline_enabled,
2022-05-07 20:08:51 +05:30
:search_rate_limit,
:search_rate_limit_unauthenticated,
2022-04-04 11:22:00 +05:30
:users_get_by_id_limit,
:users_get_by_id_limit_allowlist_raw,
:runner_token_expiration_interval,
:group_runner_token_expiration_interval,
2022-07-16 23:28:13 +05:30
:project_runner_token_expiration_interval,
2022-10-11 01:57:18 +05:30
:pipeline_limit_per_project_user_sha,
2022-11-25 23:54:43 +05:30
:invitation_flow_enforcement,
2023-03-04 22:38:38 +05:30
:can_create_group,
2023-03-17 16:20:25 +05:30
:bulk_import_enabled,
:allow_runner_registration_token,
2023-04-23 21:23:45 +05:30
:user_defaults_to_private_profile,
:deactivation_email_additional_text
2021-09-04 01:27:46 +05:30
].tap do |settings|
2022-10-11 01:57:18 +05:30
next if Gitlab.com?
settings << :deactivate_dormant_users
settings << :deactivate_dormant_users_period
2021-09-04 01:27:46 +05:30
end
2017-09-10 17:25:29 +05:30
end
2018-12-05 23:21:45 +05:30
2022-10-11 01:57:18 +05:30
def runner_token_expiration_interval_attributes
{
instance_runner_token_expiration_interval: @application_setting.runner_token_expiration_interval,
group_runner_token_expiration_interval: @application_setting.group_runner_token_expiration_interval,
project_runner_token_expiration_interval: @application_setting.project_runner_token_expiration_interval
}
end
2019-07-07 11:18:12 +05:30
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,
2023-04-23 21:23:45 +05:30
:external_authorization_service_url,
:allow_deploy_tokens_and_keys_with_external_authn
2019-07-07 11:18:12 +05:30
]
end
2021-03-11 19:13:27 +05:30
# ok to remove in REST API v5
2021-01-03 14:25:43 +05:30
def deprecated_attributes
[
2021-03-11 19:13:27 +05:30
:admin_notification_email,
:asset_proxy_whitelist
2021-01-03 14:25:43 +05:30
]
end
2018-12-05 23:21:45 +05:30
def expanded_by_default?
Rails.env.test?
end
2019-07-31 22:56:46 +05:30
2019-12-26 22:10:19 +05:30
def integration_expanded?(substring)
2021-06-08 01:23:25 +05:30
@application_setting.errors.messages.any? { |k, _| k.to_s.start_with?(substring) }
2019-12-26 22:10:19 +05:30
end
2019-07-31 22:56:46 +05:30
def instance_clusters_enabled?
2022-05-07 20:08:51 +05:30
clusterable = Clusters::Instance.new
2022-07-16 23:28:13 +05:30
clusterable.certificate_based_clusters_enabled? &&
2022-05-07 20:08:51 +05:30
can?(current_user, :read_cluster, clusterable)
2019-07-31 22:56:46 +05:30
end
2019-12-21 20:55:43 +05:30
def omnibus_protected_paths_throttle?
Rack::Attack.throttles.key?('protected paths')
end
2020-03-13 15:44:24 +05:30
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,
'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,
'self_monitoring_project_exists' =>
Gitlab::CurrentSettings.self_monitoring_project.present?.to_s,
'self_monitoring_project_full_path' =>
Gitlab::CurrentSettings.self_monitoring_project&.full_path
}
end
2021-01-03 14:25:43 +05:30
2021-09-30 23:02:18 +05:30
def valid_runner_registrars
Gitlab::CurrentSettings.valid_runner_registrars
end
2021-01-29 00:20:46 +05:30
def signup_enabled?
!!Gitlab::CurrentSettings.signup_enabled
end
2021-10-27 15:23:28 +05:30
def pending_user_count
User.blocked_pending_approval.count
end
2022-03-02 08:16:31 +05:30
def registration_features_can_be_prompted?
!Gitlab::CurrentSettings.usage_ping_enabled?
end
2022-07-23 23:45:48 +05:30
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,
2023-01-13 00:05:48 +05:30
email_confirmation_setting: @application_setting[:email_confirmation_setting].to_s,
2022-07-23 23:45:48 +05:30
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,
2023-01-13 00:05:48 +05:30
pending_user_count: pending_user_count,
project_sharing_help_link: help_page_path('user/group/access_and_permissions', anchor: 'prevent-a-project-from-being-shared-with-groups'),
group_sharing_help_link: help_page_path('user/group/access_and_permissions', anchor: 'prevent-group-sharing-outside-the-group-hierarchy')
2022-07-23 23:45:48 +05:30
}
end
2015-04-26 12:48:37 +05:30
end
2019-12-04 20:38:33 +05:30
2021-06-08 01:23:25 +05:30
ApplicationSettingsHelper.prepend_mod_with('ApplicationSettingsHelper')
2019-12-04 20:38:33 +05:30
# The methods in `EE::ApplicationSettingsHelper` should be available as both
# instance and class methods.
2021-06-08 01:23:25 +05:30
ApplicationSettingsHelper.extend_mod_with('ApplicationSettingsHelper')