Commit ed9550f8 authored by Jan Provaznik's avatar Jan Provaznik 💬
Browse files

Ask user explicitly about usage stats agreement

On single user deployment ask user explicitly about sending
usage pings and using version check.
parent 380c7169
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -10,6 +10,8 @@ def update
      .execute

    if successful
      session[:ask_for_usage_stats_consent] = false if usage_stats_updated?

      redirect_to admin_application_settings_path,
        notice: 'Application settings saved successfully'
    else
@@ -67,6 +69,10 @@ def application_setting_params
        Array(enabled_oauth_sign_in_sources)
    end

    if usage_stats_updated?
      params[:usage_stats_set_by_user_id] = current_user.id
    end

    params[:application_setting][:import_sources]&.delete("")
    params[:application_setting][:restricted_visibility_levels]&.delete("")
    params.delete(:domain_blacklist_raw) if params[:domain_blacklist_file]
@@ -76,6 +82,10 @@ def application_setting_params
    )
  end

  def usage_stats_updated?
    params[:application_setting].key?(:usage_ping_enabled) || params[:application_setting].key?(:version_check_enabled)
  end

  def visible_application_setting_attributes
    ApplicationSettingsHelper.visible_attributes + [
      :domain_blacklist_file,
+25 −0
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ class ApplicationController < ActionController::Base
  before_action :add_gon_variables, unless: [:peek_request?, :json_request?]
  before_action :configure_permitted_parameters, if: :devise_controller?
  before_action :require_email, unless: :devise_controller?
  before_action :set_usage_stats_consent_flag

  around_action :set_locale

@@ -433,4 +434,28 @@ def should_enforce_terms?

    !(peek_request? || devise_controller?)
  end

  def set_usage_stats_consent_flag
    return unless current_user
    return if sessionless_user?
    return if session.has_key?(:ask_for_usage_stats_consent)

    session[:ask_for_usage_stats_consent] = current_user.requires_usage_stats_consent?

    if session[:ask_for_usage_stats_consent]
      disable_usage_stats
    end
  end

  def disable_usage_stats
    application_setting_params = {
      usage_ping_enabled: false,
      version_check_enabled: false
    }
    settings = Gitlab::CurrentSettings.current_application_settings

    ApplicationSettings::UpdateService
      .new(settings, current_user, application_setting_params)
      .execute
  end
end
+1 −0
Original line number Diff line number Diff line
@@ -252,6 +252,7 @@ def visible_attributes
      :unique_ips_limit_per_user,
      :unique_ips_limit_time_window,
      :usage_ping_enabled,
      :usage_stats_set_by_user_id,
      :instance_statistics_visibility_private,
      :user_default_external,
      :user_show_add_ssh_key_message,
+10 −4
Original line number Diff line number Diff line
module VersionCheckHelper
  def version_status_badge
    if Rails.env.production? && Gitlab::CurrentSettings.version_check_enabled
    return unless Rails.env.production?
    return unless Gitlab::CurrentSettings.version_check_enabled
    return if requires_usage_stats_consent?

    image_url = VersionCheck.new.url
    image_tag image_url, class: 'js-version-status-badge'
  end

  def requires_usage_stats_consent?
    User.count == 1 && User.first.requires_usage_stats_consent?
  end
end
+6 −1
Original line number Diff line number Diff line
@@ -299,7 +299,8 @@ def self.defaults
      usage_ping_enabled: Settings.gitlab['usage_ping_enabled'],
      instance_statistics_visibility_private: false,
      user_default_external: false,
      user_show_add_ssh_key_message: true
      user_show_add_ssh_key_message: true,
      usage_stats_set_by_user_id: nil
    }
  end

@@ -445,6 +446,10 @@ def reset_memoized_terms
    latest_terms
  end

  def usage_stats_enabled?
    usage_ping_enabled || version_check_enabled
  end

  private

  def ensure_uuid!
Loading