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:
parent
b134f950d7
commit
a7e82cbd61
|
@ -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
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
---
|
||||
title: Make sure reCAPTCHA configuration is loaded when spam checks are initiated
|
||||
merge_request:
|
||||
author:
|
|
@ -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
|
||||
|
||||
|
|
Loading…
Reference in New Issue