Don't reset application settings oauth providers by mistake
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
This commit is contained in:
		
							parent
							
								
									bcf7a7e76c
								
							
						
					
					
						commit
						6106cad955
					
				| 
						 | 
				
			
			@ -58,11 +58,14 @@ class Admin::ApplicationSettingsController < Admin::ApplicationController
 | 
			
		|||
  def application_setting_params
 | 
			
		||||
    params[:application_setting] ||= {}
 | 
			
		||||
 | 
			
		||||
    enabled_oauth_sign_in_sources = params[:application_setting].delete(:enabled_oauth_sign_in_sources)
 | 
			
		||||
    if params[:application_setting].key?(:enabled_oauth_sign_in_sources)
 | 
			
		||||
      enabled_oauth_sign_in_sources = params[:application_setting].delete(:enabled_oauth_sign_in_sources)
 | 
			
		||||
      enabled_oauth_sign_in_sources&.delete("")
 | 
			
		||||
 | 
			
		||||
    params[:application_setting][:disabled_oauth_sign_in_sources] =
 | 
			
		||||
      AuthHelper.button_based_providers.map(&:to_s) -
 | 
			
		||||
      Array(enabled_oauth_sign_in_sources)
 | 
			
		||||
      params[:application_setting][:disabled_oauth_sign_in_sources] =
 | 
			
		||||
        AuthHelper.button_based_providers.map(&:to_s) -
 | 
			
		||||
        Array(enabled_oauth_sign_in_sources)
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    params[:application_setting][:import_sources]&.delete("")
 | 
			
		||||
    params[:application_setting][:restricted_visibility_levels]&.delete("")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -74,10 +74,12 @@ module ApplicationSettingsHelper
 | 
			
		|||
      css_class = 'btn'
 | 
			
		||||
      css_class << ' active' unless disabled
 | 
			
		||||
      checkbox_name = 'application_setting[enabled_oauth_sign_in_sources][]'
 | 
			
		||||
      name = Gitlab::Auth::OAuth::Provider.label_for(source)
 | 
			
		||||
 | 
			
		||||
      label_tag(checkbox_name, class: css_class) do
 | 
			
		||||
        check_box_tag(checkbox_name, source, !disabled,
 | 
			
		||||
                      autocomplete: 'off') + Gitlab::Auth::OAuth::Provider.label_for(source)
 | 
			
		||||
                      autocomplete: 'off',
 | 
			
		||||
                      id: name.tr(' ', '_')) + name
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -24,6 +24,7 @@
 | 
			
		|||
    - if omniauth_enabled? && button_based_providers.any?
 | 
			
		||||
      .form-group
 | 
			
		||||
        = f.label :enabled_oauth_sign_in_sources, 'Enabled OAuth sign-in sources', class: 'control-label col-sm-2'
 | 
			
		||||
        = hidden_field_tag 'application_setting[enabled_oauth_sign_in_sources][]'
 | 
			
		||||
        .col-sm-10
 | 
			
		||||
          .btn-group{ data: { toggle: 'buttons' } }
 | 
			
		||||
            - oauth_providers_checkboxes.each do |source|
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -85,6 +85,26 @@ feature 'Admin updates settings' do
 | 
			
		|||
    expect(page).to have_content "Application settings saved successfully"
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  scenario 'Modify oauth providers' do
 | 
			
		||||
    expect(Gitlab::CurrentSettings.disabled_oauth_sign_in_sources).to be_empty
 | 
			
		||||
 | 
			
		||||
    page.within('.as-signin') do
 | 
			
		||||
      uncheck 'Google'
 | 
			
		||||
      click_button 'Save changes'
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    expect(page).to have_content "Application settings saved successfully"
 | 
			
		||||
    expect(Gitlab::CurrentSettings.disabled_oauth_sign_in_sources).to include('google_oauth2')
 | 
			
		||||
 | 
			
		||||
    page.within('.as-signin') do
 | 
			
		||||
      check "Google"
 | 
			
		||||
      click_button 'Save changes'
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    expect(page).to have_content "Application settings saved successfully"
 | 
			
		||||
    expect(Gitlab::CurrentSettings.disabled_oauth_sign_in_sources).not_to include('google_oauth2')
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  scenario 'Change Help page' do
 | 
			
		||||
    page.within('.as-help-page') do
 | 
			
		||||
      fill_in 'Help page text', with: 'Example text'
 | 
			
		||||
| 
						 | 
				
			
			@ -234,16 +254,6 @@ feature 'Admin updates settings' do
 | 
			
		|||
    expect(find('#service_push_channel').value).to eq '#test_channel'
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  context 'sign-in restrictions', :js do
 | 
			
		||||
    it 'de-activates oauth sign-in source' do
 | 
			
		||||
      page.within('.as-signin') do
 | 
			
		||||
        find('input#application_setting_enabled_oauth_sign_in_sources_[value=gitlab]').send_keys(:return)
 | 
			
		||||
 | 
			
		||||
        expect(find('.btn', text: 'GitLab.com')).not_to have_css('.active')
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  scenario 'Change Keys settings' do
 | 
			
		||||
    page.within('.as-visibility-access') do
 | 
			
		||||
      select 'Are forbidden', from: 'RSA SSH keys'
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue