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