From 6ff20f2c990a553ab25eaf668882e5e1d1374312 Mon Sep 17 00:00:00 2001
From: Ryan Wold <64987852+ryanwoldatwork@users.noreply.github.com>
Date: Wed, 2 Apr 2025 13:36:59 -0700
Subject: [PATCH] admin can enable turnstile option
* add location code help
* show IP address for a submission
* persist text responses prior to submission
* asset that text entered on a form persists, and is cleared on successful submission
* note spam_prevention_mechanism
* attach touchpoints form to window
---
app/controllers/submissions_controller.rb | 8 ++-
app/models/submission.rb | 1 +
app/views/admin/forms/_admin_options.html.erb | 23 ++++++++-
.../forms/_form_manager_options.html.erb | 12 -----
app/views/admin/submissions/show.html.erb | 17 ++++++-
app/views/components/widget/_fba.js.erb | 49 ++++++++++++++-----
...17_submission_spam_prevention_mechanism.rb | 5 ++
db/schema.rb | 3 +-
spec/features/touchpoints_spec.rb | 21 ++++++++
9 files changed, 109 insertions(+), 30 deletions(-)
create mode 100644 db/migrate/20250402195517_submission_spam_prevention_mechanism.rb
diff --git a/app/controllers/submissions_controller.rb b/app/controllers/submissions_controller.rb
index 6c645a431..3a6cdfd61 100644
--- a/app/controllers/submissions_controller.rb
+++ b/app/controllers/submissions_controller.rb
@@ -81,8 +81,12 @@ def create
private
def create_in_local_database(submission)
- if submission.form.enable_turnstile? && !verify_turnstile(params["cf-turnstile-response"])
- submission.errors.add(:base, "Turnstile verification failed")
+ if submission.form.enable_turnstile?
+ if verify_turnstile(params["cf-turnstile-response"])
+ submission.spam_prevention_mechanism = :turnstile
+ else
+ submission.errors.add(:base, "Turnstile verification failed")
+ end
end
respond_to do |format|
diff --git a/app/models/submission.rb b/app/models/submission.rb
index 9efb6fffd..22b441cb1 100644
--- a/app/models/submission.rb
+++ b/app/models/submission.rb
@@ -65,6 +65,7 @@ def validate_custom_form
answered_questions.delete('referer')
answered_questions.delete('aasm_state')
answered_questions.delete('tags')
+ answered_questions.delete('spam_prevention_mechanism')
answered_questions.delete('spam_score')
answered_questions.delete('flagged')
answered_questions.delete('spam')
diff --git a/app/views/admin/forms/_admin_options.html.erb b/app/views/admin/forms/_admin_options.html.erb
index 0aaddfa11..04230a7aa 100644
--- a/app/views/admin/forms/_admin_options.html.erb
+++ b/app/views/admin/forms/_admin_options.html.erb
@@ -58,11 +58,30 @@
+
+
+
diff --git a/app/views/admin/forms/_form_manager_options.html.erb b/app/views/admin/forms/_form_manager_options.html.erb
index 5815d269b..fc04762ec 100644
--- a/app/views/admin/forms/_form_manager_options.html.erb
+++ b/app/views/admin/forms/_form_manager_options.html.erb
@@ -95,18 +95,6 @@
<%= f.text_field :expiration_date, class: "usa-input" %>
-