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