Commit ed2a58fd73a521747cf3370baa5807ce07047290

Authored by Antonio Terceiro
1 parent d005f120

Allow disabling the need for e-mail confirmations

This is specially useful in development/test setups where you don't have
a working MTA.
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))