From f4c37007025b5bdd018c1b95f54a077a4c52319e Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Sun, 13 Dec 2015 15:39:09 +0000 Subject: [PATCH] Adds the "Hide my email address" option on the registration form (#21500). git-svn-id: http://svn.redmine.org/redmine/trunk@14976 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/controllers/account_controller.rb | 1 + app/views/account/register.html.erb | 4 ++++ test/functional/account_controller_test.rb | 28 ++++++++++++++++++++++ 3 files changed, 33 insertions(+) diff --git a/app/controllers/account_controller.rb b/app/controllers/account_controller.rb index 3c318957b..a4fad4b5c 100644 --- a/app/controllers/account_controller.rb +++ b/app/controllers/account_controller.rb @@ -122,6 +122,7 @@ class AccountController < ApplicationController user_params = params[:user] || {} @user = User.new @user.safe_attributes = user_params + @user.pref.attributes = params[:pref] if params[:pref] @user.admin = false @user.register if session[:auth_source_registration] diff --git a/app/views/account/register.html.erb b/app/views/account/register.html.erb index f655514a3..0cd0d8cff 100644 --- a/app/views/account/register.html.erb +++ b/app/views/account/register.html.erb @@ -16,6 +16,10 @@

<%= f.text_field :firstname, :required => true %>

<%= f.text_field :lastname, :required => true %>

<%= f.text_field :mail, :required => true %>

+<%= labelled_fields_for :pref, @user.pref do |pref_fields| %> +

<%= pref_fields.check_box :hide_mail %>

+<% end %> + <% unless @user.force_default_language? %>

<%= f.select :language, lang_options_for_select %>

diff --git a/test/functional/account_controller_test.rb b/test/functional/account_controller_test.rb index 8dfda0f7a..f308c935f 100644 --- a/test/functional/account_controller_test.rb +++ b/test/functional/account_controller_test.rb @@ -247,6 +247,18 @@ class AccountControllerTest < ActionController::TestCase end end + def test_get_register_should_show_hide_mail_preference + get :register + assert_select 'input[name=?][checked=checked]', 'pref[hide_mail]' + end + + def test_get_register_should_show_hide_mail_preference_with_setting_turned_off + with_settings :default_users_hide_mail => '0' do + get :register + assert_select 'input[name=?]:not([checked=checked])', 'pref[hide_mail]' + end + end + # See integration/account_test.rb for the full test def test_post_register_with_registration_on with_settings :self_registration => '3' do @@ -287,6 +299,22 @@ class AccountControllerTest < ActionController::TestCase end end + def test_post_register_should_create_user_with_hide_mail_preference + with_settings :default_users_hide_mail => '0' do + user = new_record(User) do + post :register, :user => { + :login => 'register', + :password => 'secret123', :password_confirmation => 'secret123', + :firstname => 'John', :lastname => 'Doe', + :mail => 'register@example.com' + }, :pref => { + :hide_mail => '1' + } + end + assert_equal true, user.pref.hide_mail + end + end + def test_get_lost_password_should_display_lost_password_form get :lost_password assert_response :success -- 2.39.5