From aa19113a024937468246d96b9b8e5cffcfca8bd9 Mon Sep 17 00:00:00 2001 From: Aiandrox Date: Thu, 10 Nov 2022 04:02:41 +0900 Subject: [PATCH 1/5] =?UTF-8?q?[Add]=20v3=E3=81=AE=E8=AA=8D=E8=A8=BC?= =?UTF-8?q?=E3=81=AB=E5=A4=B1=E6=95=97=E3=81=97=E3=81=9F=E5=A0=B4=E5=90=88?= =?UTF-8?q?=E3=81=AFv2=E3=81=AB=E3=82=88=E3=82=8B=E8=AA=8D=E8=A8=BC?= =?UTF-8?q?=E3=82=82=E4=BD=B5=E7=94=A8=E3=81=99=E3=82=8B=20https://github.?= =?UTF-8?q?com/ambethia/recaptcha/wiki/Recaptcha-with-Turbo-and-Stimulus?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/concerns/.keep | 0 app/controllers/concerns/verify_recaptcha.rb | 13 +++++++ app/controllers/inquiries_controller.rb | 5 +-- .../controllers/recaptcha_v2_controller.js | 9 +++++ app/views/inquiries/_form.html.slim | 34 +++++++++++++++++++ app/views/inquiries/new.html.slim | 33 +----------------- app/views/inquiries/new.turbo_stream.erb | 8 +++++ config/credentials/development.yml.enc | 2 +- config/credentials/production.yml.enc | 2 +- 9 files changed, 70 insertions(+), 36 deletions(-) delete mode 100644 app/controllers/concerns/.keep create mode 100644 app/controllers/concerns/verify_recaptcha.rb create mode 100644 app/javascript/controllers/recaptcha_v2_controller.js create mode 100644 app/views/inquiries/_form.html.slim create mode 100644 app/views/inquiries/new.turbo_stream.erb diff --git a/app/controllers/concerns/.keep b/app/controllers/concerns/.keep deleted file mode 100644 index e69de29b..00000000 diff --git a/app/controllers/concerns/verify_recaptcha.rb b/app/controllers/concerns/verify_recaptcha.rb new file mode 100644 index 00000000..3fb9846d --- /dev/null +++ b/app/controllers/concerns/verify_recaptcha.rb @@ -0,0 +1,13 @@ +module VerifyRecaptcha + extend ActiveSupport::Concern + + private + + def verify_recaptcha_v2 + verify_recaptcha(secret_key: Rails.application.credentials.recaptcha_v2[:secret_key]) + end + + def verify_recaptcha_v3(action) + verify_recaptcha(action: action, minimum_score: 0.3, secret_key: Rails.application.credentials.recaptcha_v3[:secret_key]) + end +end diff --git a/app/controllers/inquiries_controller.rb b/app/controllers/inquiries_controller.rb index 7a76b750..e6f7abae 100644 --- a/app/controllers/inquiries_controller.rb +++ b/app/controllers/inquiries_controller.rb @@ -1,12 +1,13 @@ class InquiriesController < ApplicationController + include VerifyRecaptcha + def new @inquiry_form = InquiryForm.new end def create @inquiry_form = InquiryForm.new(inquiry_params) - recaptcha_valid = verify_recaptcha(action: 'inquiry', minimum_score: 0.3, - secret_key: Recaptcha.configuration.secret_key) + recaptcha_valid = verify_recaptcha_v3('inquiry') || verify_recaptcha_v2 if @inquiry_form.valid? && recaptcha_valid @inquiry_form.save redirect_to root_path, notice: '送信しました!' diff --git a/app/javascript/controllers/recaptcha_v2_controller.js b/app/javascript/controllers/recaptcha_v2_controller.js new file mode 100644 index 00000000..75034bcb --- /dev/null +++ b/app/javascript/controllers/recaptcha_v2_controller.js @@ -0,0 +1,9 @@ +import { Controller } from "stimulus"; + +export default class extends Controller { + static values = { siteKey: String }; + + initialize() { + grecaptcha.render("recaptchaV2", { sitekey: this.siteKeyValue }); + } +} diff --git a/app/views/inquiries/_form.html.slim b/app/views/inquiries/_form.html.slim new file mode 100644 index 00000000..e2181ed3 --- /dev/null +++ b/app/views/inquiries/_form.html.slim @@ -0,0 +1,34 @@ += turbo_frame_tag inquiry_form do |f| + = form_with model: inquiry_form, url: inquiry_path, class: 'form' do |f| + - if f.object.errors.any? + ul + - @inquiry_form.errors.full_messages.each do |message| + li= message + .form-group + .form-label + .flex.items-center + = f.label :name + p.required + | 必須 + = f.text_field :name, required: true, class: 'text-field' + .form-group + = f.label :email, class: 'form-label' + = f.email_field :email, class: 'text-field' + .form-group + .form-label + .flex.items-center + = f.label :about + p.required + | 必須 + = f.select :about, ['ご意見・ご要望', '不具合・バグ', 'その他'], { required: true, prompt: 'お問い合わせ内容を選択してください' }, class: 'select-box' + .form-group + .form-label + .flex.items-center + = f.label :description + p.required + | 必須 + = f.text_area :description, class: 'text-field h-24' + .form-group + = turbo_frame_tag 'recaptcha' do + = recaptcha_v3(action: 'inquiry', site_key: Recaptcha.configuration.site_key, turbolinks: true) + = f.submit '送信する', class: 'btn btn-indigo' diff --git a/app/views/inquiries/new.html.slim b/app/views/inquiries/new.html.slim index 66cbb4ee..869da38f 100644 --- a/app/views/inquiries/new.html.slim +++ b/app/views/inquiries/new.html.slim @@ -1,34 +1,3 @@ - set_meta_tags title: 'お問い合わせ' -= form_with model: @inquiry_form, url: inquiry_path, class: 'form' do |f| - - if f.object.errors.any? - ul - - @inquiry_form.errors.full_messages.each do |message| - li= message - .form-group - .form-label - .flex.items-center - = f.label :name - p.required - | 必須 - = f.text_field :name, required: true, class: 'text-field' - .form-group - = f.label :email, class: 'form-label' - = f.email_field :email, class: 'text-field' - .form-group - .form-label - .flex.items-center - = f.label :about - p.required - | 必須 - = f.select :about, ['ご意見・ご要望', '不具合・バグ', 'その他'], { required: true, prompt: 'お問い合わせ内容を選択してください' }, class: 'select-box' - .form-group - .form-label - .flex.items-center - = f.label :description - p.required - | 必須 - = f.text_area :description, class: 'text-field h-24' - .form-group - = recaptcha_v3(action: 'inquiry', site_key: Recaptcha.configuration.site_key) - = f.submit '送信する', class: 'btn btn-indigo' += render 'form', inquiry_form: @inquiry_form diff --git a/app/views/inquiries/new.turbo_stream.erb b/app/views/inquiries/new.turbo_stream.erb new file mode 100644 index 00000000..efa87a45 --- /dev/null +++ b/app/views/inquiries/new.turbo_stream.erb @@ -0,0 +1,8 @@ +<%= turbo_stream.replace dom_id(@inquiry_form), partial: 'inquiries/form', locals: { inquiry_form: @inquiry_form } %> + +<%= turbo_stream.replace 'recaptcha' do %> +
+<% end %> diff --git a/config/credentials/development.yml.enc b/config/credentials/development.yml.enc index c86f3be4..2df16f1f 100644 --- a/config/credentials/development.yml.enc +++ b/config/credentials/development.yml.enc @@ -1 +1 @@ -v/Gvo9UiAqfU51t8XxTArl2W2fOV3g2XnEDgMNI++DRroqgMGMC6WMMeFugj7K90bX7N7V7Vk76av6lYuhOsSoMY4BPd4McwtvluZHjJMOwsJ9AipSvTqHavuMLK004M8DkoxOCclhKNqR4cVuKU/as2ijothv2ANzmJvK1++LhHyNh0Rk+iPZk/skRimtpqGsNpmKnf0VNjIOW6vx6Q2ZiNOfX2pcnBNf1rTvx52hW8sU3Hxsi1DQA1t9XIj7EFZTJ0mYzlwlsn0C3Gqx/lxm6J34TVqqlArMPS2Nt6YejsLqsOrygF+WGaXYpRzD3oZ9ytV0pN+QMoVz/4BfO+gIO0L3ZOItzaMXsUJXUHuQlkYuYj8IOdQVEg/k8j1eXG7jLmfj7oPVRIm/u9R95Hq7eJ+m/Z6fYH8GIlknqVMFs71cIPmsQ74zZov43h0ttAFkJPb6Z+qMmFiegIcZrEdQo0d5SPuw2A/M9DWtvrNUsaTANXTEQxvF7EFM7Q9t06JUj1LSnXPtzuhIZRfI9USmtNyjr9lps9Dmv8NrR0oF9RQlNRTPh81ofHRzaDjkjJ4n1anf+G9OpWSO/PCSAZnXbmueeg6SIYHxzlctVUmyAiC+WsksDfnPppm0VwobmsPVV4pViGjw8qG+qElmP96vGAF9TOkLJe1s6ur9Wrypd5FSmJo/7tRvfHIcCd1GfX5oxUGlL7dAOSkarNZzZ/fkJCjd62rby38NJeWzTNkV9RsdO6fDAD2mu3LfnMH2c2sq8bF8Le4D37heYg--xHoye4/GQ0J6Lwdf--Hd99iDtGNZFh98sys6H3qQ== \ No newline at end of file +DKBSxFwnhHBGQa9RcTPPq4f+PBmxGJ+aH5BXV8RJ9T6S6cw5PQ6XIyokbTpAG/ZeODVmYKIgEL+bm8dC3wG0XIcZ7362gLjy8yVuRqrUvJMkMi7pF3IAusay0plQ2PFaHGQ43YwPvES7r43YaCzK+UAVZotqEeBcm5R3GbaJs/TW2p+JzNT0PHiMOg/Bmf3VG5QqRC1rNlfGhgl+blwVxpiYdk5tUQcOYXruY4jFRUST9nxsYzIM1Vi4LVFCOiIPgvH0KC6JQo2XwRAFK2a8VBzg9fIppBvgY29sWFWzD1WXkNdkNPw0D70i36tvoLEmy7eGPxG9lmDgmB+eiJYxq2Gdk0eyTHGsNOCYGPAseM+B8U4eK1MQDimpRHIRX7LgmbOLIps4J3UJBwq3quaCpkhQZdXt/pu2GnqHFyjgEj3GrBkw803Z0fBdgJD1tk1s3IfQwJPE/39WnmoHIj/Bt8ZvD2t+XqHfjLVVKjxAreBZ3QguMtR/hMoMenl5lohT5FzIh648qDmyIQ/7tqtdDtufhZagaivF7sfuM5X5snYRNsXORyYVBwGX3JLKpJsIvGMcdp768Z934ZhiqY/GhCxLzio9GkIpc63nww0eQSF9UrtqL/zw8qwsopy+rXkWOYsPiob9lRHxoqoiiuiJKNuTDTDuPSqTVNmQSJ9hfB2RKfhd8D2011bjLp0lvpjzQo8RW3nXckGtw4e10btu/OjGvRHQFyN9O9cdf7n/bL1mQHI9kpDuwPZ8Nx3CVq0lMlYr4rfmFDOdj1EXHNmkrVG+XkYCgTguBVB5XqYPyA3YcY+MbEWHDD/Djx11zI1egELIMh3aY3AxPQVTkI8onzKQd8RBfH/qcePoE1KTM5smbtnySfRNjdJpGP+eRmsJ00cEaEEjuP/hDE0T54PCSFSs6hqgLgc/dDKdANrDypcr2YVUKPjZ--l1x757oqpU9+jDlk--DPQFrOZDr7ohUx4ymVhYOw== \ No newline at end of file diff --git a/config/credentials/production.yml.enc b/config/credentials/production.yml.enc index 401fc964..50665b87 100644 --- a/config/credentials/production.yml.enc +++ b/config/credentials/production.yml.enc @@ -1 +1 @@ -tR6ycYyxVYdPzvsJJROKfxicUYKwOEDKRnQCtvtSzfPStSPm9wIN1MrPYjp9IX9b6OYh/vPHDWvUx/lcInAi17lnGJH6PRAb2EwZ4gsjLlCDALiKuqnen2U6YH9bD/PTFjjZ3+ATFn858btE5iyHNhya4uTlTScwCE9FCq5hyXC6UpfzhqdVROcawKRLWxcTvDIrrPqIyNywbBp1mgqXv5QYg8P/+w/XND8ifMz9M66EGZhv9hkjplk3NaftZGhBKqgoBEICcNLbaeMtrrldU0SHTH0dlupBoi2w6usBh0PPVjviXOT4ihfHgFBDDNUY9XdKPuXtG7AU3pXeY09i3XoIK1ebjmirM+zByR6JUDZk28DZ/8UgcqSOEPfjg3gzeAnQCSHaqDmEGfNj5UR8Eab36jtek7LR1kO7MBN3PR0/cigpJ/w8QF3SQ399ifWoRH33MrnElMaYJLYfudrHXIIigzyK2u/pQmU8Ft7IVJO1JSSuGKXsqlvNiWD559uxHXTfXgWQWzHARCd7pa1mNL3jYPz1ImjAzgwDMWEFYoXwUaGK4GGj6KaegB5qsJ/ewLmzQUnDYw66ivY8V2QBDzsDNeMSF8dy88Ur8v6XAhvaP4NnUpGFSQnUQd42gmCpwQjEthq9M/3NJjmZfYE9jH9fs5tE8o7nlj8pFxOEKXWOSrGNcCVwmIXDSy/rxYWOKWGpOj6VkDcsb+YeeXh3DvuyoeIMg+kFUNL35w3cfVaugJF5DTC9ra3til5mVqcaGobUithOOtRkj6WEaoT31Rgp1ammF+soeiD0XQ/0xN7SF8YeGDJlGlj6OpSNk079RbEEB79p3z6xKuYRhVE3NwqJCMaDZPhFyhDLZa7j69VxXIILUW7PpWrbg7wfw9+YzflO2Gcw9xinqtiQQAaRWU63OSMAsXnPU0kGHocptQlfTrtW06cgkPLmJmaPrjMMw7VBuLkpbbJIt9pTLoHy366fjTcSSws57XEFBxU+wiF4I8744VNXndR7BCEyi5tQsSdiRNDjB73ZtmS4bJCG4YiySEMBZrM/PULMk+a7GoTV0eq35VUzkfAsHKoYdSKdxMBCTg9RLmOyv3g3NQTgqr/a+dSGprca/h4++gh6QXwAudzFnB8ldq0lWR44sD1exJSyYhIdVr8+qBIS3YPQt3x/dHFBzr0t--fWhSTMjt5Z7CmrGT--8mfRKYlT2XYPEtguALA0wA== \ No newline at end of file +py03D84WlfKugShZKi9QZ88ycg3MyIsDnbHAzLhArFWyfoAjVCX5uzT2ic2QfbzThSgAKJdPOZWIsYZC5bTrzZN1u7gLPgb7l2Es1I1ZmQ5KgWq/GRtL1L8/A0XT8P4lwwlrqinyltt3yGSBcamfyzECiOdNBAojrwEqFb3eN5k2OdB18KNXnC53IvSnS84kKf32FmspXtALZRTc77d+j9VKbtGq5vgVjoQC2IQPNCGCLsvkw9gPfyPYJ6pkflEUYdQnc29xLS/jWIaH7O7R7Rm31CG6+d9BW0KHERX5p7GiBxYcJsInabOd9HenVOuDqWRYERORDMFGyxxV6LMDy2pN0DxNokVo7VPlel/QEg9eqs3WvgEKyrBYQdoDldpijMiW9aPph1oJNcZ3muRWniWALUctwY95iApfDOIODwsIP/xHKqjLWRhO8IhFlhM42PLau33cFxWiM+ZdTuVIT84HF2MJpheobUgSxKy2tR2FKwf24kShHhZJPWUDq5gC6kNYmClwMFvzP39Hv4uHr0l3C54TLbrpJ1kZUzGgUf1EUJFbYlYnQIYTLIGeY4jx//nJ1POavbTnYCsWcUBc35Qn67F4zO6EFoUZAypw8VyGLEgP7862jiVYIsq9P7uok8bunTQOIMn0HXDiZRUcRBWtDN4a4l72rI+k5cN3jvbnMNC1eqEXTTX+7n3r/nfYi6DkBheq3pysN0U9okLuFhvRRmKAPXCRFDpHSYhlrm5S/kq45lUE+hsgmssbeEJQwdpZWhkOme59Y6pt8KN8mZxdyOxj/uCrlct/drlOx+i58IxkGMlR/hZOKMLJBVg6JcM+DK/kI5JczQqD0COBqvu6iAF1GZn2AUyBKXPoyDNFCZ+bvzgJn88OY7TpvSt85IbuRwC+bE0e4S1vK8WW3GvRgWDuxMHKjx1cHTMvnyPi3tIoUlr+KLniMCe/dYfUrdvRCugE/T4BvqhP8cLgbyFL38+E170Wv2cZv/y+6xOZvJEszRC34iGjQb7HrW7w8fEmYr+eKIUlJCaV2pAUNzV7mi93keYrTyOJcEgmuTi+ESlkCxX564CGAqxcP7f9FnPx7CjVhpVMSx64ORkEWFPhLJ4dk2fDSUFwhDooP1xXv7gVEplKO6Q3Dsv/LsfnP8TcPYAwdKpKXRfmnFKEGv58dlWc+0fT0xTQPKknQhfHwoL3yuXFt4Lucb9PDNiXI5h9LLFyjz81rCCXeaREiay+Nx9cpxVZCUe4fDRvAGAMKINAcm/d7o4SGsaGaf+HM2UUyw4zvNIucMvg7AEHJe5NE0948KDcTcx6YxiDc5gW6nchz3lrIuhMno3MIzY3IWU=--oze3IhAtdiEXyX5H--edBghWIjQiH3mKhM0jGctA== \ No newline at end of file From 0889178d6bcda7e6a806a10bc3621e24f5790c05 Mon Sep 17 00:00:00 2001 From: Aiandrox Date: Thu, 10 Nov 2022 04:20:47 +0900 Subject: [PATCH 2/5] =?UTF-8?q?[Fix]=20=E8=AA=BF=E7=AF=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/inquiries_controller.rb | 5 +++-- app/views/inquiries/_form.html.slim | 4 ++-- app/views/inquiries/new.turbo_stream.erb | 13 ++++++++----- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/app/controllers/inquiries_controller.rb b/app/controllers/inquiries_controller.rb index e6f7abae..86287f9d 100644 --- a/app/controllers/inquiries_controller.rb +++ b/app/controllers/inquiries_controller.rb @@ -7,8 +7,9 @@ def new def create @inquiry_form = InquiryForm.new(inquiry_params) - recaptcha_valid = verify_recaptcha_v3('inquiry') || verify_recaptcha_v2 - if @inquiry_form.valid? && recaptcha_valid + @recaptcha_valid = verify_recaptcha_v3('inquiry') || verify_recaptcha_v2 + + if @recaptcha_valid && @inquiry_form.valid? @inquiry_form.save redirect_to root_path, notice: '送信しました!' else diff --git a/app/views/inquiries/_form.html.slim b/app/views/inquiries/_form.html.slim index e2181ed3..e67aa3e1 100644 --- a/app/views/inquiries/_form.html.slim +++ b/app/views/inquiries/_form.html.slim @@ -28,7 +28,7 @@ p.required | 必須 = f.text_area :description, class: 'text-field h-24' + = turbo_frame_tag 'recaptcha' do + = recaptcha_v3(action: 'inquiry', site_key: Recaptcha.configuration.site_key) .form-group - = turbo_frame_tag 'recaptcha' do - = recaptcha_v3(action: 'inquiry', site_key: Recaptcha.configuration.site_key, turbolinks: true) = f.submit '送信する', class: 'btn btn-indigo' diff --git a/app/views/inquiries/new.turbo_stream.erb b/app/views/inquiries/new.turbo_stream.erb index efa87a45..8c6fe449 100644 --- a/app/views/inquiries/new.turbo_stream.erb +++ b/app/views/inquiries/new.turbo_stream.erb @@ -1,8 +1,11 @@ <%= turbo_stream.replace dom_id(@inquiry_form), partial: 'inquiries/form', locals: { inquiry_form: @inquiry_form } %> -<%= turbo_stream.replace 'recaptcha' do %> -
+<% unless @recaptcha_valid %> + <%= turbo_stream.replace 'recaptcha' do %> +
+ <% end %> <% end %> From 4ffd00c887f5638f29a1521813f9dda28ada6689 Mon Sep 17 00:00:00 2001 From: Aiandrox Date: Thu, 10 Nov 2022 04:21:04 +0900 Subject: [PATCH 3/5] =?UTF-8?q?[Fix]=20=E3=83=88=E3=83=83=E3=83=97?= =?UTF-8?q?=E3=81=AB=E3=83=AA=E3=83=80=E3=82=A4=E3=83=AC=E3=82=AF=E3=83=88?= =?UTF-8?q?=E3=81=95=E3=81=9B=E3=82=8B=E3=81=9F=E3=82=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/inquiries/_form.html.slim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/inquiries/_form.html.slim b/app/views/inquiries/_form.html.slim index e67aa3e1..9b9df8f9 100644 --- a/app/views/inquiries/_form.html.slim +++ b/app/views/inquiries/_form.html.slim @@ -1,5 +1,5 @@ = turbo_frame_tag inquiry_form do |f| - = form_with model: inquiry_form, url: inquiry_path, class: 'form' do |f| + = form_with model: inquiry_form, url: inquiry_path, class: 'form', data: { turbo: false } do |f| - if f.object.errors.any? ul - @inquiry_form.errors.full_messages.each do |message| From 56b02d1a8be6d6d0c78b18d7ee606e11f64e49f1 Mon Sep 17 00:00:00 2001 From: Aiandrox Date: Thu, 10 Nov 2022 05:00:19 +0900 Subject: [PATCH 4/5] [Ignore] lint --- .eslintrc.json | 24 ++++++------- .../controllers/recaptcha_v2_controller.js | 1 + package.json | 1 + yarn.lock | 34 ++++++++++++++----- 4 files changed, 39 insertions(+), 21 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index dc8e7cb5..1c58147f 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,14 +1,14 @@ { - "env": { - "browser": true, - "es2021": true, - "node": true - }, - "extends": "eslint:recommended", - "parserOptions": { - "ecmaVersion": 12, - "sourceType": "module" - }, - "rules": { - } + "env": { + "browser": true, + "es2021": true, + "node": true + }, + "extends": "eslint:recommended", + "parser": "@babel/eslint-parser", + "parserOptions": { + "ecmaVersion": 12, + "sourceType": "module" + }, + "rules": {} } diff --git a/app/javascript/controllers/recaptcha_v2_controller.js b/app/javascript/controllers/recaptcha_v2_controller.js index 75034bcb..b5b64538 100644 --- a/app/javascript/controllers/recaptcha_v2_controller.js +++ b/app/javascript/controllers/recaptcha_v2_controller.js @@ -4,6 +4,7 @@ export default class extends Controller { static values = { siteKey: String }; initialize() { + // eslint-disable-next-line no-undef grecaptcha.render("recaptchaV2", { sitekey: this.siteKeyValue }); } } diff --git a/package.json b/package.json index b474dadf..3af1e3b4 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ }, "version": "0.1.0", "devDependencies": { + "@babel/eslint-parser": "^7.19.1", "eslint": "^7.29.0", "eslint-loader": "^4.0.2", "webpack-dev-server": "^3.11.2" diff --git a/yarn.lock b/yarn.lock index 9da9b522..66ec8e57 100644 --- a/yarn.lock +++ b/yarn.lock @@ -42,6 +42,15 @@ semver "^6.3.0" source-map "^0.5.0" +"@babel/eslint-parser@^7.19.1": + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.19.1.tgz#4f68f6b0825489e00a24b41b6a1ae35414ecd2f4" + integrity sha512-AqNf2QWt1rtu2/1rLswy6CDP7H9Oh3mMhk177Y67Rg8d7RD9WfOLLv8CGn6tisFvS2htm86yIe1yLF6I1UDaGQ== + dependencies: + "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" + eslint-visitor-keys "^2.1.0" + semver "^6.3.0" + "@babel/generator@^7.15.4": version "7.15.4" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.15.4.tgz#85acb159a267ca6324f9793986991ee2022a05b0" @@ -939,6 +948,13 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz#87de7af9c231826fdd68ac7258f77c429e0e5fcf" integrity sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w== +"@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": + version "5.1.1-v1" + resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz#dbf733a965ca47b1973177dc0bb6c889edcfb129" + integrity sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg== + dependencies: + eslint-scope "5.1.1" + "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" @@ -2928,6 +2944,14 @@ eslint-loader@^4.0.2: object-hash "^2.0.3" schema-utils "^2.6.5" +eslint-scope@5.1.1, eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + eslint-scope@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" @@ -2936,14 +2960,6 @@ eslint-scope@^4.0.3: esrecurse "^4.1.0" estraverse "^4.1.1" -eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - eslint-utils@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" @@ -2956,7 +2972,7 @@ eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== -eslint-visitor-keys@^2.0.0: +eslint-visitor-keys@^2.0.0, eslint-visitor-keys@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== From 93325f9f57220074f70d6ce1e97642d603836058 Mon Sep 17 00:00:00 2001 From: Aiandrox Date: Thu, 10 Nov 2022 05:08:47 +0900 Subject: [PATCH 5/5] =?UTF-8?q?=E3=81=84=E3=82=8D=E3=81=84=E3=82=8D?= =?UTF-8?q?=E3=81=94=E3=81=A1=E3=82=83=E3=81=94=E3=81=A1=E3=82=83=E3=81=AB?= =?UTF-8?q?=E3=81=AA=E3=81=A3=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/concerns/verify_recaptcha.rb | 13 ++++++++++--- app/controllers/inquiries_controller.rb | 7 ++++--- app/views/inquiries/_form.html.slim | 2 +- ...new.turbo_stream.erb => create.turbo_stream.erb} | 0 4 files changed, 15 insertions(+), 7 deletions(-) rename app/views/inquiries/{new.turbo_stream.erb => create.turbo_stream.erb} (100%) diff --git a/app/controllers/concerns/verify_recaptcha.rb b/app/controllers/concerns/verify_recaptcha.rb index 3fb9846d..6cd834ce 100644 --- a/app/controllers/concerns/verify_recaptcha.rb +++ b/app/controllers/concerns/verify_recaptcha.rb @@ -3,11 +3,18 @@ module VerifyRecaptcha private - def verify_recaptcha_v2 - verify_recaptcha(secret_key: Rails.application.credentials.recaptcha_v2[:secret_key]) + def verify_recaptcha_v2(model) + verify_recaptcha( + model: model, + secret_key: Rails.application.credentials.recaptcha_v2[:secret_key], + ) end def verify_recaptcha_v3(action) - verify_recaptcha(action: action, minimum_score: 0.3, secret_key: Rails.application.credentials.recaptcha_v3[:secret_key]) + verify_recaptcha( + action: action, + minimum_score: 0.3, + secret_key: Rails.application.credentials.recaptcha_v3[:secret_key], + ) end end diff --git a/app/controllers/inquiries_controller.rb b/app/controllers/inquiries_controller.rb index 86287f9d..8d839858 100644 --- a/app/controllers/inquiries_controller.rb +++ b/app/controllers/inquiries_controller.rb @@ -7,12 +7,13 @@ def new def create @inquiry_form = InquiryForm.new(inquiry_params) - @recaptcha_valid = verify_recaptcha_v3('inquiry') || verify_recaptcha_v2 + @recaptcha_valid = verify_recaptcha_v3('inquiry') || verify_recaptcha_v2(@inquiry_form) if @recaptcha_valid && @inquiry_form.valid? @inquiry_form.save - redirect_to root_path, notice: '送信しました!' + redirect_to notice: '送信しました!' else + if recaptcha_reply&.dig('error-codes') error_codes = recaptcha_reply['error-codes'].join(', ') Rails.logger.warn(" @@ -20,7 +21,7 @@ def create ") flash.now[:alert] = error_codes end - render :new, status: :unprocessable_entity + # render :new, status: :unprocessable_entity end end diff --git a/app/views/inquiries/_form.html.slim b/app/views/inquiries/_form.html.slim index 9b9df8f9..e67aa3e1 100644 --- a/app/views/inquiries/_form.html.slim +++ b/app/views/inquiries/_form.html.slim @@ -1,5 +1,5 @@ = turbo_frame_tag inquiry_form do |f| - = form_with model: inquiry_form, url: inquiry_path, class: 'form', data: { turbo: false } do |f| + = form_with model: inquiry_form, url: inquiry_path, class: 'form' do |f| - if f.object.errors.any? ul - @inquiry_form.errors.full_messages.each do |message| diff --git a/app/views/inquiries/new.turbo_stream.erb b/app/views/inquiries/create.turbo_stream.erb similarity index 100% rename from app/views/inquiries/new.turbo_stream.erb rename to app/views/inquiries/create.turbo_stream.erb