From ff0b93380a103832e54e49f956e288adf22fb1f8 Mon Sep 17 00:00:00 2001 From: Christoph Haas Date: Thu, 21 Jul 2016 11:29:25 +0200 Subject: [PATCH] Recaptcha support added when reporting screenshots There's lots of spam recently. We need to do something against it. --- Gemfile | 2 ++ Gemfile.lock | 3 +++ app/controllers/packages_controller.rb | 10 ++++++---- app/views/packages/_report_dropdown.slim | 1 + config/initializers/recaptcha.rb | 4 ++++ 5 files changed, 16 insertions(+), 4 deletions(-) create mode 100644 config/initializers/recaptcha.rb diff --git a/Gemfile b/Gemfile index 1f2488a..31db6aa 100644 --- a/Gemfile +++ b/Gemfile @@ -111,3 +111,5 @@ gem 'devise' # Font Awesome icons gem "font-awesome-rails" + +gem "recaptcha", require: "recaptcha/rails" diff --git a/Gemfile.lock b/Gemfile.lock index 7404d2b..9ce4f44 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -208,6 +208,8 @@ GEM ffi (>= 0.5.0) rdoc (4.2.2) json (~> 1.4) + recaptcha (3.3.0) + json ref (2.0.0) responders (2.1.2) railties (>= 4.2.0, < 5.1) @@ -291,6 +293,7 @@ DEPENDENCIES pg_search rails (= 4.2.0) rails-erd + recaptcha sass-rails (~> 5.0) sdoc (~> 0.4.0) slim-rails diff --git a/app/controllers/packages_controller.rb b/app/controllers/packages_controller.rb index 23198fb..559776c 100644 --- a/app/controllers/packages_controller.rb +++ b/app/controllers/packages_controller.rb @@ -177,10 +177,12 @@ class PackagesController < ApplicationController # Receive an anonymous report from a user to have a screenshot removed. def report_screenshot @screenshot = Screenshot.find(params[:id]) - @screenshot.delete_reason = params[:delete_reason] - @screenshot.markedfordelete = true - @screenshot.save! - flash['notice'] = "Screenshot reported. The moderators will deal with it." + if verify_recaptcha + @screenshot.delete_reason = params[:delete_reason] + @screenshot.markedfordelete = true + @screenshot.save! + flash['notice'] = "Screenshot reported. The moderators will deal with it." + end redirect_to :back end diff --git a/app/views/packages/_report_dropdown.slim b/app/views/packages/_report_dropdown.slim index 69dad7a..039f473 100644 --- a/app/views/packages/_report_dropdown.slim +++ b/app/views/packages/_report_dropdown.slim @@ -9,4 +9,5 @@ the screenshot should get removed: = form_tag(report_screenshot_path(screenshot.id)) = text_area_tag 'delete_reason', nil, class: 'input-group-field', maxlength: 100, rows: 3, cols: 50 + = recaptcha_tags = submit_tag 'Request removal', class: 'button alert' diff --git a/config/initializers/recaptcha.rb b/config/initializers/recaptcha.rb new file mode 100644 index 0000000..17defa3 --- /dev/null +++ b/config/initializers/recaptcha.rb @@ -0,0 +1,4 @@ +Recaptcha.configure do |config| + config.public_key = '6LcliyUTAAAAAIOCkg-c4f4btSEiDJIdwVVixnd2' + config.private_key = '6LcliyUTAAAAAHEtx8ow3tkKx4-fQ5gTbvKN82B5' +end