diff --git a/app/models/create_user.rb b/app/models/create_user.rb deleted file mode 100644 index 1c80b4c..0000000 --- a/app/models/create_user.rb +++ /dev/null @@ -1,59 +0,0 @@ -class CreateUser < Task - - settings_items :user_id, :type => String - settings_items :name, :type => String - settings_items :author_name, :type => String - settings_items :email, :type => String - - after_create :schedule_spam_checking - - alias :environment :target - alias :environment= :target= - - def schedule_spam_checking - self.delay.check_for_spam - end - - include Noosfero::Plugin::HotSpot - - def sender - "#{name} (#{email})" - end - - def perform - user=environment.users.find_by_id(user_id) - user.activate - end - - def title - _("New user") - end - - def subject - name - end - - def information - { :message => _('%{sender} wants to register.'), - :variables => {:sender => sender} } - end - - def icon - result = {:type => :defined_image, :src => '/images/icons-app/person-minor.png', :name => name} - end - - def target_notification_description - _('%{sender} tried to register.') % - {:sender => sender} - end - - def target_notification_message - target_notification_description + "\n\n" + - _('You need to login on %{system} in order to approve or reject this user.') % { :environment => self.environment } - end - - def target_notification_message - _("User \"%{user}\" just requested to register. You have to approve or reject it through the \"Pending Validations\" section in your control panel.\n") % { :user => self.name } - end - -end \ No newline at end of file diff --git a/app/models/moderate_user_registration.rb b/app/models/moderate_user_registration.rb new file mode 100644 index 0000000..818a2d6 --- /dev/null +++ b/app/models/moderate_user_registration.rb @@ -0,0 +1,59 @@ +class ModerateUserRegistration < Task + + settings_items :user_id, :type => String + settings_items :name, :type => String + settings_items :author_name, :type => String + settings_items :email, :type => String + + after_create :schedule_spam_checking + + alias :environment :target + alias :environment= :target= + + def schedule_spam_checking + self.delay.check_for_spam + end + + include Noosfero::Plugin::HotSpot + + def sender + "#{name} (#{email})" + end + + def perform + user=environment.users.find_by_id(user_id) + user.activate + end + + def title + _("New user") + end + + def subject + name + end + + def information + { :message => _('%{sender} wants to register.'), + :variables => {:sender => sender} } + end + + def icon + result = {:type => :defined_image, :src => '/images/icons-app/person-minor.png', :name => name} + end + + def target_notification_description + _('%{sender} tried to register.') % + {:sender => sender} + end + + def target_notification_message + target_notification_description + "\n\n" + + _('You need to login on %{system} in order to approve or reject this user.') % { :environment => self.environment } + end + + def target_notification_message + _("User \"%{user}\" just requested to register. You have to approve or reject it through the \"Pending Validations\" section in your control panel.\n") % { :user => self.name } + end + +end \ No newline at end of file diff --git a/app/models/user.rb b/app/models/user.rb index ba2f3bf..8c7a690 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -48,10 +48,10 @@ class User < ActiveRecord::Base user.person = p end if user.environment.enabled?('skip_new_user_email_confirmation') - unless user.environment.enabled?('admin_must_approve_new_users') - user.activate - else + if user.environment.enabled?('admin_must_approve_new_users') create_moderate_task + else + user.activate end end end @@ -142,7 +142,7 @@ class User < ActiveRecord::Base end def create_moderate_task - @task = CreateUser.new + @task = ModerateUserRegistration.new @task.user_id = self.id @task.name = self.name @task.email = self.email diff --git a/test/unit/moderate_user_registration_test.rb b/test/unit/moderate_user_registration_test.rb new file mode 100644 index 0000000..0d8334c --- /dev/null +++ b/test/unit/moderate_user_registration_test.rb @@ -0,0 +1,22 @@ +# encoding: UTF-8 +require File.dirname(__FILE__) + '/../test_helper' + +class ModerateUserRegistrationTest < ActiveSupport::TestCase + fixtures :users, :environments + + def test_should_on_perform_activate_user + user = User.new(:login => 'lalala', :email => 'lalala@example.com', :password => 'test', :password_confirmation => 'test') + user.save! + environment = Environment.default + t= ModerateUserRegistration.new + t.user_id = user.id + t.name = user.name + t.author_name = user.name + t.email = user.email + t.target= environment + t.save! + assert !user.activated? + t.perform + assert environment.users.find_by_id(user.id).activated? + end +end -- libgit2 0.21.2