diff --git a/.rvmrc b/.rvmrc index 89be03e34..a7127209a 100644 --- a/.rvmrc +++ b/.rvmrc @@ -1,2 +1,21 @@ -rvm use 1.9.3-p484 -rvm gemset use diaspora +#!/bin/sh + +rvm rvmrc warning ignore + +. ./script/env/ruby_env + +if [ -e '.rvmrc.local' ]; then + . ./.rvmrc.local; +elif [ -e '.rvmrc_custom' ] ; then + . ./.rvmrc_custom; +else + if rvm list strings | grep -q "$ruby_version" ; then + rvm --create use "$ruby_version@$gemset" + else + printf "\e[00;31mPLEASE INSTALL RUBY $ruby_version WITH \`rvm install $ruby_version\`\n" + printf "Don't forget to run \`cd .. && cd -\` afterwards!\e[00m\n" + return 1 + fi +fi + +. ./script/env/ensure_right_rubygems diff --git a/Changelog.md b/Changelog.md index 82389339f..38880d20a 100644 --- a/Changelog.md +++ b/Changelog.md @@ -76,6 +76,7 @@ For more details see https://wiki.diasporafoundation.org/Updating * Add actions on aspects on the contact page [#4570](https://github.com/diaspora/diaspora/pull/4570) * Added a statistics route with general pod information, and if enabled in pod settings, total user, half year/monthly active users and local post counts [#4602](https://github.com/diaspora/diaspora/pull/4602) * Add indication about markdown formatting in the publisher [#4589](https://github.com/diaspora/diaspora/pull/4589) +* Add captcha to signup form [#4659](https://github.com/diaspora/diaspora/pull/4659) ## Gem updates * selenium-webdriver 2.34.0 -> 2.39.0 diff --git a/Gemfile b/Gemfile index 6cb54abff..9fc5f8e0c 100644 --- a/Gemfile +++ b/Gemfile @@ -17,7 +17,7 @@ gem 'devise', '3.0.2' # Captcha -gem 'galetahub-simple_captcha', :require => 'simple_captcha' +gem 'galetahub-simple_captcha', '0.1.5', :require => 'simple_captcha' # Background processing diff --git a/Gemfile.lock b/Gemfile.lock index 4c5e5a52f..7e269fbed 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -449,7 +449,7 @@ DEPENDENCIES foreigner (= 1.4.2) foreman (= 0.62) fuubar (= 1.1.1) - galetahub-simple_captcha + galetahub-simple_captcha (= 0.1.5) gon (= 4.1.1) guard-cucumber (= 1.4.0) guard-rspec (= 3.0.2) diff --git a/app/models/user.rb b/app/models/user.rb index 33ac15fd4..6ee1b23aa 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -485,6 +485,7 @@ class User < ActiveRecord::Base save end end + private def clearable_fields self.attributes.keys - ["id", "username", "encrypted_password", diff --git a/app/views/registrations/new.mobile.haml b/app/views/registrations/new.mobile.haml index f7a897caa..ab4cba4ed 100644 --- a/app/views/registrations/new.mobile.haml +++ b/app/views/registrations/new.mobile.haml @@ -43,6 +43,9 @@ = f.label :password_confirmation, t('password_confirmation').upcase .controls = f.password_field :password_confirmation, :placeholder => "••••••••" + + - if AppConfig.settings.captcha.enable? + = show_simple_captcha(:object => 'user', :code_type => 'numeric') .controls = f.submit t('registrations.new.create_my_account'), :class => 'btn primary', :disable_with => t('registrations.new.submitting') diff --git a/app/views/simple_captcha/_simple_captcha.erb b/app/views/simple_captcha/_simple_captcha.erb deleted file mode 100644 index 6f2125195..000000000 --- a/app/views/simple_captcha/_simple_captcha.erb +++ /dev/null @@ -1,8 +0,0 @@ -
- <%= simple_captcha_options[:image] %> -
- -
- <%= simple_captcha_options[:field] %> -
- diff --git a/app/views/simple_captcha/_simple_captcha.haml b/app/views/simple_captcha/_simple_captcha.haml new file mode 100644 index 000000000..bc7d70bc4 --- /dev/null +++ b/app/views/simple_captcha/_simple_captcha.haml @@ -0,0 +1,4 @@ +.control-label + = simple_captcha_options[:image] +.controls + = simple_captcha_options[:field] \ No newline at end of file diff --git a/app/views/simple_captcha/_simple_captcha.mobile.haml b/app/views/simple_captcha/_simple_captcha.mobile.haml new file mode 100644 index 000000000..625fa768d --- /dev/null +++ b/app/views/simple_captcha/_simple_captcha.mobile.haml @@ -0,0 +1,4 @@ +.control-group#captcha + = simple_captcha_options[:image] + .controls + = simple_captcha_options[:field] \ No newline at end of file diff --git a/config/diaspora.yml.example b/config/diaspora.yml.example index 6ff24184d..d5e9d2d03 100644 --- a/config/diaspora.yml.example +++ b/config/diaspora.yml.example @@ -227,24 +227,24 @@ configuration: ## Section ## Settings about captcha captcha: ## Section - ## Set this to false if you don't want to use captcha for signup process - #enable: true + ## Set this to false if you don't want to use captcha for signup process + #enable: true - ## Change this value to use different captcha image size - #image_size: '120x20' + ## Change this value to use different captcha image size + #image_size: '120x20' - ## Length of captcha text. Default value is 5 - #captcha_length: 5 + ## Length of captcha text. Default value is 5 + #captcha_length: 5 - ## Change this value to use various image style. - ## Available options are: 'simply_blue', 'simply_red' - ## 'simply_green', 'charcoal_grey', 'embosed_silver', 'all_black', - ## 'distorted_black', 'almost_invisible', 'random' - #image_style: 'simply_green' + ## Change this value to use various image style. + ## Available options are: 'simply_blue', 'simply_red' + ## 'simply_green', 'charcoal_grey', 'embosed_silver', 'all_black', + ## 'distorted_black', 'almost_invisible', 'random' + #image_style: 'simply_green' - ## Set this value to use various level of distortion - ## Available options are: 'low', 'medium', 'high', 'random' - #distortion: 'low' + ## Set this value to use various level of distortion + ## Available options are: 'low', 'medium', 'high', 'random' + #distortion: 'low' ## Settings about invitations invitations: ## Section diff --git a/db/schema.rb b/db/schema.rb index 57aeb34b4..5326609a5 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -316,8 +316,8 @@ ActiveRecord::Schema.define(:version => 20131213171804) do t.boolean "favorite", :default => false t.string "facebook_id" t.string "tweet_id" - t.integer "open_graph_cache_id" t.text "tumblr_ids" + t.integer "open_graph_cache_id" end add_index "posts", ["author_id", "root_guid"], :name => "index_posts_on_author_id_and_root_guid", :unique => true diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 9974ae843..7f203d1f6 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -1018,4 +1018,34 @@ describe User do end end end + + describe "sign up" do + before do + params = {:username => "ohai", + :email => "ohai@example.com", + :password => "password", + :password_confirmation => "password", + :captcha => "12345", + + :person => + {:profile => + {:first_name => "O", + :last_name => "Hai"} + } + } + @user = User.build(params) + end + + it "saves with captcha off" do + AppConfig.settings.captcha.enable = false + @user.should_receive(:save).and_return(true) + @user.sign_up + end + + it "saves with captcha on" do + AppConfig.settings.captcha.enable = true + @user.should_receive(:save_with_captcha).and_return(true) + @user.sign_up + end + end end