Commit ed2a58fd73a521747cf3370baa5807ce07047290
1 parent
d005f120
Exists in
staging
and in
42 other branches
Allow disabling the need for e-mail confirmations
This is specially useful in development/test setups where you don't have a working MTA.
Showing
5 changed files
with
28 additions
and
1 deletions
Show diff stats
app/controllers/public/account_controller.rb
| @@ -78,7 +78,12 @@ class AccountController < ApplicationController | @@ -78,7 +78,12 @@ class AccountController < ApplicationController | ||
| 78 | invitation.update_attributes!({:friend => @user.person}) | 78 | invitation.update_attributes!({:friend => @user.person}) |
| 79 | invitation.finish | 79 | invitation.finish |
| 80 | end | 80 | end |
| 81 | - @register_pending = true | 81 | + if @user.activated? |
| 82 | + self.current_user = @user | ||
| 83 | + redirect_to '/' | ||
| 84 | + else | ||
| 85 | + @register_pending = true | ||
| 86 | + end | ||
| 82 | end | 87 | end |
| 83 | rescue ActiveRecord::RecordInvalid | 88 | rescue ActiveRecord::RecordInvalid |
| 84 | @person.valid? | 89 | @person.valid? |
app/models/environment.rb
| @@ -121,6 +121,7 @@ class Environment < ActiveRecord::Base | @@ -121,6 +121,7 @@ class Environment < ActiveRecord::Base | ||
| 121 | 'xmpp_chat' => _('XMPP/Jabber based chat'), | 121 | 'xmpp_chat' => _('XMPP/Jabber based chat'), |
| 122 | 'show_zoom_button_on_article_images' => _('Show a zoom link on all article images'), | 122 | 'show_zoom_button_on_article_images' => _('Show a zoom link on all article images'), |
| 123 | 'captcha_for_logged_users' => _('Ask captcha when a logged user comments too'), | 123 | 'captcha_for_logged_users' => _('Ask captcha when a logged user comments too'), |
| 124 | + 'skip_new_user_email_confirmation' => _('Skip e-mail confirmation for new users') | ||
| 124 | } | 125 | } |
| 125 | end | 126 | end |
| 126 | 127 |
app/models/user.rb
| @@ -35,6 +35,9 @@ class User < ActiveRecord::Base | @@ -35,6 +35,9 @@ class User < ActiveRecord::Base | ||
| 35 | user.person.name ||= user.login | 35 | user.person.name ||= user.login |
| 36 | user.person.visible = false unless user.activated? | 36 | user.person.visible = false unless user.activated? |
| 37 | user.person.save! | 37 | user.person.save! |
| 38 | + if user.environment && user.environment.enabled?('skip_new_user_email_confirmation') | ||
| 39 | + user.activate | ||
| 40 | + end | ||
| 38 | end | 41 | end |
| 39 | after_create :deliver_activation_code | 42 | after_create :deliver_activation_code |
| 40 | after_create :delay_activation_check | 43 | after_create :delay_activation_check |
test/functional/account_controller_test.rb
| @@ -737,6 +737,16 @@ class AccountControllerTest < ActionController::TestCase | @@ -737,6 +737,16 @@ class AccountControllerTest < ActionController::TestCase | ||
| 737 | end | 737 | end |
| 738 | end | 738 | end |
| 739 | 739 | ||
| 740 | + should 'login after signup when no e-mail confirmation is required' do | ||
| 741 | + e = Environment.default | ||
| 742 | + e.enable('skip_new_user_email_confirmation') | ||
| 743 | + e.save! | ||
| 744 | + | ||
| 745 | + new_user | ||
| 746 | + assert_response :redirect | ||
| 747 | + assert_not_nil assigns(:current_user) | ||
| 748 | + end | ||
| 749 | + | ||
| 740 | protected | 750 | protected |
| 741 | def new_user(options = {}, extra_options ={}) | 751 | def new_user(options = {}, extra_options ={}) |
| 742 | data = {:profile_data => person_data} | 752 | data = {:profile_data => person_data} |
test/unit/user_test.rb
| @@ -478,6 +478,14 @@ class UserTest < ActiveSupport::TestCase | @@ -478,6 +478,14 @@ class UserTest < ActiveSupport::TestCase | ||
| 478 | end | 478 | end |
| 479 | end | 479 | end |
| 480 | 480 | ||
| 481 | + should 'activate right after creation when confirmation is not required' do | ||
| 482 | + e = Environment.default | ||
| 483 | + e.enable('skip_new_user_email_confirmation') | ||
| 484 | + e.save! | ||
| 485 | + | ||
| 486 | + assert new_user.activated? | ||
| 487 | + end | ||
| 488 | + | ||
| 481 | protected | 489 | protected |
| 482 | def new_user(options = {}) | 490 | def new_user(options = {}) |
| 483 | user = User.new({ :login => 'quire', :email => 'quire@example.com', :password => 'quire', :password_confirmation => 'quire' }.merge(options)) | 491 | user = User.new({ :login => 'quire', :email => 'quire@example.com', :password => 'quire', :password_confirmation => 'quire' }.merge(options)) |