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)) |