diff --git a/app/models/user.rb b/app/models/user.rb index 020a4a9..6d08bef 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -21,12 +21,11 @@ class User < ActiveRecord::Base end end - before_create :make_activation_code - before_create do |user| if user.environment.nil? user.environment = Environment.default end + user.send(:make_activation_code) if !user.environment.enabled?('skip_new_user_email_confirmation') end after_create do |user| @@ -35,7 +34,7 @@ class User < ActiveRecord::Base user.person.name ||= user.login user.person.visible = false unless user.activated? user.person.save! - if user.environment && user.environment.enabled?('skip_new_user_email_confirmation') + if user.environment.enabled?('skip_new_user_email_confirmation') user.activate end end @@ -117,7 +116,7 @@ class User < ActiveRecord::Base self.activated_at = Time.now.utc self.activation_code = nil self.person.visible = true - self.person.save! && self.save + self.person.save! && self.save! end def activated? diff --git a/db/migrate/20120813163139_set_activation_code_to_nil_if_already_activated.rb b/db/migrate/20120813163139_set_activation_code_to_nil_if_already_activated.rb new file mode 100644 index 0000000..ed9591c --- /dev/null +++ b/db/migrate/20120813163139_set_activation_code_to_nil_if_already_activated.rb @@ -0,0 +1,9 @@ +class SetActivationCodeToNilIfAlreadyActivated < ActiveRecord::Migration + def self.up + update("UPDATE users SET activation_code = ? WHERE activated_at IS NOT NULL") + end + + def self.down + say('Can not be reverted.') + end +end diff --git a/test/functional/account_controller_test.rb b/test/functional/account_controller_test.rb index ac2d8e5..647b7ef 100644 --- a/test/functional/account_controller_test.rb +++ b/test/functional/account_controller_test.rb @@ -610,6 +610,15 @@ class AccountControllerTest < ActionController::TestCase assert_equal 'example.com', Person['testuser'].organization end + should 'activate user after signup if environment is set to skip confirmation' do + env = Environment.default + env.enable('skip_new_user_email_confirmation') + env.save! + new_user(:login => 'activated_user') + user = User.find_by_login('activated_user') + assert user.activated? + end + should 'redirect to initial page after logout' do login_as :johndoe get :logout -- libgit2 0.21.2