Class: Admin::ApplicationSettingsController
- Inherits:
-
ApplicationController
- Object
- ActionController::Base
- ApplicationController
- ApplicationController
- Admin::ApplicationSettingsController
- Includes:
- InternalRedirect
- Defined in:
- app/controllers/admin/application_settings_controller.rb
Constant Summary collapse
- VALID_SETTING_PANELS =
%w(general repository ci_cd reporting metrics_and_profiling network preferences).freeze
- PARAM_JOB_ID_MAX_SIZE =
The current size of a sidekiq job's jid is 24 characters. The size of the jid is an internal detail of Sidekiq, and they do not guarantee that it'll stay the same. We chose 50 to give us room in case the size of the jid increases. The jid is alphanumeric, so 50 is very generous. There is a spec that ensures that the constant value is more than the size of an actual jid.
50
Constants inherited from ApplicationController
ApplicationController::DEFAULT_GITLAB_CACHE_CONTROL
Constants included from Gitlab::Logging::CloudflareHelper
Gitlab::Logging::CloudflareHelper::CLOUDFLARE_CUSTOM_HEADERS
Constants included from Gitlab::NoCacheHeaders
Gitlab::NoCacheHeaders::DEFAULT_GITLAB_NO_CACHE_HEADERS
Instance Method Summary collapse
- #clear_repository_check_states ⇒ Object
-
#create_self_monitoring_project ⇒ Object
Specs are in spec/requests/self_monitoring_project_spec.rb.
-
#delete_self_monitoring_project ⇒ Object
Specs are in spec/requests/self_monitoring_project_spec.rb.
- #integrations ⇒ Object
-
#lets_encrypt_terms_of_service ⇒ Object
Getting ToS url requires `directory` api call to Let's Encrypt which could result in 500 error/slow rendering on settings page Because of that we use separate controller action.
- #reset_health_check_token ⇒ Object
- #reset_registration_token ⇒ Object
-
#status_create_self_monitoring_project ⇒ Object
Specs are in spec/requests/self_monitoring_project_spec.rb.
-
#status_delete_self_monitoring_project ⇒ Object
Specs are in spec/requests/self_monitoring_project_spec.rb.
- #update ⇒ Object
- #usage_data ⇒ Object
Methods included from InternalRedirect
#full_path_for_uri, #host_allowed?, #referer_path, #safe_redirect_path, #safe_redirect_path_for_url, #sanitize_redirect
Methods included from EnforcesAdminAuthentication
#authenticate_admin!, #storable_location?
Methods inherited from ApplicationController
#not_found, #redirect_back_or_default, #render, #route_not_found
Methods included from Gitlab::Utils::StrongMemoize
#clear_memoization, #strong_memoize, #strong_memoized?
Methods included from Gitlab::Logging::CloudflareHelper
#store_cloudflare_headers!, #valid_cloudflare_header?
Methods included from Impersonation
Methods included from InitializesCurrentUserMode
Methods included from Gitlab::Experimentation::ControllerConcern
#experiment_enabled?, #experiment_tracking_category_and_group, #frontend_experimentation_tracking_data, #record_experiment_user, #set_experimentation_subject_id_cookie, #track_experiment_event
Methods included from SessionsHelper
#limit_session_time, #unconfirmed_email?
Methods included from SessionlessAuthentication
#authenticate_sessionless_user!, #sessionless_bypass_admin_mode!, #sessionless_sign_in, #sessionless_user?
Methods included from Gitlab::SearchContext::ControllerConcern
Methods included from EnforcesTwoFactorAuthentication
#check_two_factor_requirement, #current_user_requires_two_factor?, #skip_two_factor?, #two_factor_authentication_reason, #two_factor_authentication_required?, #two_factor_grace_period, #two_factor_grace_period_expired?, #two_factor_skippable?, #two_factor_verifier
Methods included from WorkhorseHelper
#send_artifacts_entry, #send_git_archive, #send_git_blob, #send_git_diff, #send_git_patch, #set_workhorse_internal_api_content_type, #workhorse_set_content_type!
Methods included from SafeParamsHelper
Methods included from PageLayoutHelper
#blank_container, #container_class, #favicon, #fluid_layout, #header_title, #nav, #page_card_attributes, #page_card_meta_tags, #page_description, #page_image, #page_title, #search_context, #sidebar
Methods included from GitlabRoutingHelper
#approve_access_request_group_member_path, #approve_access_request_project_member_path, #artifacts_action_path, #commit_url, #commits_url, #edit_milestone_path, #edit_pipeline_schedule_path, #environment_delete_path, #environment_metrics_path, #environment_path, #expose_fast_artifacts_path, #fast_browse_project_job_artifacts_path, #fast_download_project_job_artifacts_path, #fast_keep_project_job_artifacts_path, #gitlab_dashboard_snippets_path, #gitlab_raw_snippet_blob_path, #gitlab_raw_snippet_blob_url, #gitlab_raw_snippet_path, #gitlab_raw_snippet_url, #gitlab_snippet_note_path, #gitlab_snippet_note_url, #gitlab_snippet_notes_path, #gitlab_snippet_notes_url, #gitlab_snippet_path, #gitlab_snippet_url, #gitlab_toggle_award_emoji_snippet_note_path, #gitlab_toggle_award_emoji_snippet_note_url, #gitlab_toggle_award_emoji_snippet_path, #gitlab_toggle_award_emoji_snippet_url, #group_member_path, #group_members_url, #issue_path, #issue_url, #leave_group_members_path, #leave_project_members_path, #merge_request_path, #merge_request_url, #pipeline_job_url, #pipeline_path, #pipeline_schedule_path, #pipeline_schedules_path, #pipeline_url, #play_pipeline_schedule_path, #preview_markdown_path, #project_commits_path, #project_member_path, #project_members_url, #project_ref_path, #project_tree_path, #request_access_group_members_path, #request_access_project_members_path, #resend_invite_group_member_path, #resend_invite_project_member_path, #take_ownership_pipeline_schedule_path, #toggle_award_emoji_personal_snippet_path, #toggle_award_emoji_project_project_snippet_path, #toggle_award_emoji_project_project_snippet_url, #toggle_subscription_path, #wiki_page_path, #wiki_path
Methods included from API::Helpers::RelatedResourcesHelpers
#expose_path, #expose_url, #issues_available?, #mrs_available?
Methods included from Gitlab::NoCacheHeaders
Methods included from Gitlab::GonHelper
#add_gon_variables, #default_avatar_url, #push_frontend_feature_flag
Methods included from WebpackHelper
#webpack_bundle_tag, #webpack_controller_bundle_tags, #webpack_entrypoint_paths, #webpack_public_host, #webpack_public_path
Methods included from StartupCssHelper
Instance Method Details
#clear_repository_check_states ⇒ Object
66 67 68 69 70 71 72 73 |
# File 'app/controllers/admin/application_settings_controller.rb', line 66 def clear_repository_check_states RepositoryCheck::ClearWorker.perform_async # rubocop:disable CodeReuse/Worker redirect_to( general_admin_application_settings_path, notice: _('Started asynchronous removal of all repository check states.') ) end |
#create_self_monitoring_project ⇒ Object
Specs are in spec/requests/self_monitoring_project_spec.rb
83 84 85 86 87 88 89 90 |
# File 'app/controllers/admin/application_settings_controller.rb', line 83 def create_self_monitoring_project job_id = SelfMonitoringProjectCreateWorker.perform_async # rubocop:disable CodeReuse/Worker render status: :accepted, json: { job_id: job_id, monitor_status: status_create_self_monitoring_project_admin_application_settings_path } end |
#delete_self_monitoring_project ⇒ Object
Specs are in spec/requests/self_monitoring_project_spec.rb
122 123 124 125 126 127 128 129 |
# File 'app/controllers/admin/application_settings_controller.rb', line 122 def delete_self_monitoring_project job_id = SelfMonitoringProjectDeleteWorker.perform_async # rubocop:disable CodeReuse/Worker render status: :accepted, json: { job_id: job_id, monitor_status: status_delete_self_monitoring_project_admin_application_settings_path } end |
#integrations ⇒ Object
34 35 36 |
# File 'app/controllers/admin/application_settings_controller.rb', line 34 def integrations @integrations = Service.find_or_initialize_all(Service.for_instance).sort_by(&:title) end |
#lets_encrypt_terms_of_service ⇒ Object
Getting ToS url requires `directory` api call to Let's Encrypt which could result in 500 error/slow rendering on settings page Because of that we use separate controller action
78 79 80 |
# File 'app/controllers/admin/application_settings_controller.rb', line 78 def lets_encrypt_terms_of_service redirect_to ::Gitlab::LetsEncrypt.terms_of_service_url end |
#reset_health_check_token ⇒ Object
60 61 62 63 64 |
# File 'app/controllers/admin/application_settings_controller.rb', line 60 def reset_health_check_token @application_setting.reset_health_check_access_token! flash[:notice] = _('New health check access token has been generated!') redirect_back_or_default end |
#reset_registration_token ⇒ Object
53 54 55 56 57 58 |
# File 'app/controllers/admin/application_settings_controller.rb', line 53 def reset_registration_token @application_setting.reset_runners_registration_token! flash[:notice] = _('New runners registration token has been generated!') redirect_to admin_runners_path end |
#status_create_self_monitoring_project ⇒ Object
Specs are in spec/requests/self_monitoring_project_spec.rb
93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 |
# File 'app/controllers/admin/application_settings_controller.rb', line 93 def status_create_self_monitoring_project job_id = params[:job_id].to_s unless job_id.length <= PARAM_JOB_ID_MAX_SIZE return render status: :bad_request, json: { message: _('Parameter "job_id" cannot exceed length of %{job_id_max_size}' % { job_id_max_size: PARAM_JOB_ID_MAX_SIZE }) } end if SelfMonitoringProjectCreateWorker.in_progress?(job_id) # rubocop:disable CodeReuse/Worker ::Gitlab::PollingInterval.set_header(response, interval: 3_000) return render status: :accepted, json: { message: _('Job to create self-monitoring project is in progress') } end if @application_setting.self_monitoring_project_id.present? return render status: :ok, json: self_monitoring_data end render status: :bad_request, json: { message: _('Self-monitoring project does not exist. Please check logs ' \ 'for any error messages') } end |
#status_delete_self_monitoring_project ⇒ Object
Specs are in spec/requests/self_monitoring_project_spec.rb
132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 |
# File 'app/controllers/admin/application_settings_controller.rb', line 132 def status_delete_self_monitoring_project job_id = params[:job_id].to_s unless job_id.length <= PARAM_JOB_ID_MAX_SIZE return render status: :bad_request, json: { message: _('Parameter "job_id" cannot exceed length of %{job_id_max_size}' % { job_id_max_size: PARAM_JOB_ID_MAX_SIZE }) } end if SelfMonitoringProjectDeleteWorker.in_progress?(job_id) # rubocop:disable CodeReuse/Worker ::Gitlab::PollingInterval.set_header(response, interval: 3_000) return render status: :accepted, json: { message: _('Job to delete self-monitoring project is in progress') } end if @application_setting.self_monitoring_project_id.nil? return render status: :ok, json: { message: _('Self-monitoring project has been successfully deleted') } end render status: :bad_request, json: { message: _('Self-monitoring project was not deleted. Please check logs ' \ 'for any error messages') } end |
#update ⇒ Object
38 39 40 |
# File 'app/controllers/admin/application_settings_controller.rb', line 38 def update perform_update end |
#usage_data ⇒ Object
42 43 44 45 46 47 48 49 50 51 |
# File 'app/controllers/admin/application_settings_controller.rb', line 42 def usage_data respond_to do |format| format.html do usage_data_json = Gitlab::Json.pretty_generate(Gitlab::UsageData.data) render html: Gitlab::Highlight.highlight('payload.json', usage_data_json, language: 'json') end format.json { render json: Gitlab::UsageData.to_json } end end |