Commit ed2a58fd73a521747cf3370baa5807ce07047290
1 parent
d005f120
Exists in
master
and in
29 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 | 78 | invitation.update_attributes!({:friend => @user.person}) |
| 79 | 79 | invitation.finish |
| 80 | 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 | 87 | end |
| 83 | 88 | rescue ActiveRecord::RecordInvalid |
| 84 | 89 | @person.valid? | ... | ... |
app/models/environment.rb
| ... | ... | @@ -121,6 +121,7 @@ class Environment < ActiveRecord::Base |
| 121 | 121 | 'xmpp_chat' => _('XMPP/Jabber based chat'), |
| 122 | 122 | 'show_zoom_button_on_article_images' => _('Show a zoom link on all article images'), |
| 123 | 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 | 126 | end |
| 126 | 127 | ... | ... |
app/models/user.rb
| ... | ... | @@ -35,6 +35,9 @@ class User < ActiveRecord::Base |
| 35 | 35 | user.person.name ||= user.login |
| 36 | 36 | user.person.visible = false unless user.activated? |
| 37 | 37 | user.person.save! |
| 38 | + if user.environment && user.environment.enabled?('skip_new_user_email_confirmation') | |
| 39 | + user.activate | |
| 40 | + end | |
| 38 | 41 | end |
| 39 | 42 | after_create :deliver_activation_code |
| 40 | 43 | after_create :delay_activation_check | ... | ... |
test/functional/account_controller_test.rb
| ... | ... | @@ -737,6 +737,16 @@ class AccountControllerTest < ActionController::TestCase |
| 737 | 737 | end |
| 738 | 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 | 750 | protected |
| 741 | 751 | def new_user(options = {}, extra_options ={}) |
| 742 | 752 | data = {:profile_data => person_data} | ... | ... |
test/unit/user_test.rb
| ... | ... | @@ -478,6 +478,14 @@ class UserTest < ActiveSupport::TestCase |
| 478 | 478 | end |
| 479 | 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 | 489 | protected |
| 482 | 490 | def new_user(options = {}) |
| 483 | 491 | user = User.new({ :login => 'quire', :email => 'quire@example.com', :password => 'quire', :password_confirmation => 'quire' }.merge(options)) | ... | ... |