Make sure reCAPTCHA configuration is loaded when spam checks are initiated

Previously it was possible when an issue was updated and Akismet flagged it as spam
that the reCAPTCHA configuration was not loaded.

Closes #33532
This commit is contained in:
Stan Hu 2017-06-10 03:28:30 -07:00
parent b134f950d7
commit a7e82cbd61
3 changed files with 14 additions and 1 deletions

View File

@ -17,10 +17,18 @@ module SpammableActions
private
def ensure_spam_config_loaded!
return @spam_config_loaded if defined?(@spam_config_loaded)
@spam_config_loaded = Gitlab::Recaptcha.load_configurations!
end
def recaptcha_check_with_fallback(&fallback)
if spammable.valid?
redirect_to spammable
elsif render_recaptcha?
ensure_spam_config_loaded!
if params[:recaptcha_verification]
flash[:alert] = 'There was an error with the reCAPTCHA. Please solve the reCAPTCHA again.'
end
@ -35,7 +43,7 @@ module SpammableActions
default_params = { request: request }
recaptcha_check = params[:recaptcha_verification] &&
Gitlab::Recaptcha.load_configurations! &&
ensure_spam_config_loaded! &&
verify_recaptcha
return default_params unless recaptcha_check

View File

@ -0,0 +1,4 @@
---
title: Make sure reCAPTCHA configuration is loaded when spam checks are initiated
merge_request:
author:

View File

@ -260,6 +260,7 @@ describe Projects::IssuesController do
before { allow_any_instance_of(described_class).to receive(:verify_recaptcha).and_return(false) }
it 'rejects an issue recognized as a spam' do
expect(Gitlab::Recaptcha).to receive(:load_configurations!).and_return(true)
expect { update_spam_issue }.not_to change{ issue.reload.title }
end