@@ -7,7 +7,8 @@ class SubscriptionsController < ApiController
77 API_URL = 'https://challenges.cloudflare.com/turnstile/v0/siteverify'
88
99 def create
10- payload = subscription_params . to_h
10+ # turnstile token is only used for bot check so strip it out before validation and submission
11+ payload = subscription_params . except ( :turnstile_token ) . to_h
1112 errors = validation_errors_for ( payload )
1213
1314 if errors . empty?
@@ -45,6 +46,7 @@ def create
4546
4647 def check_cloudflare_turnstile
4748 return unless Rails . configuration . x . cloudflare_turnstile . enabled
49+ return if params [ :subscription ] . blank?
4850 return if valid_turnstile_token?
4951
5052 Rails . logger . warn ( '[subscriptions#create] outcome=failure error_code=turnstile_verification_failed' )
@@ -65,6 +67,9 @@ def valid_turnstile_token?
6567 secret : Rails . configuration . x . cloudflare_turnstile . secret_key ,
6668 response : token ,
6769 remoteip : request . remote_ip
70+ } ,
71+ {
72+ request : { timeout : 5 , open_timeout : 2 }
6873 }
6974 )
7075 unless response . success?
@@ -82,7 +87,7 @@ def valid_turnstile_token?
8287 end
8388
8489 def subscription_params
85- params . require ( :subscription ) . permit ( :email , :test_opt_in , :privacy_policy )
90+ params . require ( :subscription ) . permit ( :email , :test_opt_in , :privacy_policy , :turnstile_token )
8691 end
8792
8893 def subscriptions_submitter
0 commit comments