diff --git a/Gemfile b/Gemfile index 77e28931b..56eae365b 100644 --- a/Gemfile +++ b/Gemfile @@ -47,6 +47,7 @@ gem 'bootsnap' gem 'addressable' gem 'httparty' gem 'rakismet' +gem 'recaptcha', require: "recaptcha/rails" # needed for looser jpeg header compat gem 'ruby-imagespec', :require => "image_spec", :git => "https://github.com/r888888888/ruby-imagespec.git", :branch => "exif-fixes" diff --git a/Gemfile.lock b/Gemfile.lock index bd565cc45..dfbc6dd26 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -278,6 +278,8 @@ GEM raindrops (0.17.0) rake (12.0.0) rakismet (1.5.4) + recaptcha (4.4.1) + json ref (2.0.0) representable (2.3.0) uber (~> 0.0.7) @@ -434,6 +436,7 @@ DEPENDENCIES radix62 (~> 1.0.1) rails (~> 4.2.0) rakismet + recaptcha responders rmagick ruby-imagespec! diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index ca8e39b62..374f9a4f3 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -43,12 +43,17 @@ class UsersController < ApplicationController def create @user = User.new(params[:user], :as => CurrentUser.role) @user.last_ip_addr = request.remote_ip - @user.save - if @user.errors.empty? - session[:user_id] = @user.id + if verify_recaptcha(model: @user) + @user.save + if @user.errors.empty? + session[:user_id] = @user.id + end + set_current_user + respond_with(@user) + else + flash[:notice] = "Sign up failed" + redirect_to new_user_path end - set_current_user - respond_with(@user) end def update diff --git a/app/views/users/new.html.erb b/app/views/users/new.html.erb index 306107b48..202aa1f40 100644 --- a/app/views/users/new.html.erb +++ b/app/views/users/new.html.erb @@ -15,6 +15,8 @@ <%= f.input :password %> <%= f.input :password_confirmation %> <%= f.button :submit, "Sign up", :data => { :disable_with => "Signing up..." } %> + + <%= recaptcha_tags %> <% end %>