diff --git a/config/locales/server.en.yml b/config/locales/server.en.yml index 069e21235c0..51ac9287d9e 100644 --- a/config/locales/server.en.yml +++ b/config/locales/server.en.yml @@ -1287,6 +1287,7 @@ en: blocked: "is not allowed." ip_address: blocked: "is blocked." + max_new_accounts_per_registration_ip: "New registrations are not allowed from your IP address (maximum limit reached). Contact a staff member." invite_mailer: subject_template: "%{invitee_name} invited you to '%{topic_title}' on %{site_domain_name}" diff --git a/lib/validators/allowed_ip_address_validator.rb b/lib/validators/allowed_ip_address_validator.rb index 5094a9bcb68..461ad344980 100644 --- a/lib/validators/allowed_ip_address_validator.rb +++ b/lib/validators/allowed_ip_address_validator.rb @@ -4,10 +4,12 @@ class AllowedIpAddressValidator < ActiveModel::EachValidator def validate_each(record, attribute, value) if record.ip_address - if ScreenedIpAddress.should_block?(record.ip_address) || - (record.trust_level == TrustLevel[0] && SpamHandler.should_prevent_registration_from_ip?(record.ip_address)) + if ScreenedIpAddress.should_block?(record.ip_address) record.errors.add(attribute, options[:message] || I18n.t('user.ip_address.blocked')) end + if record.trust_level == TrustLevel[0] && SpamHandler.should_prevent_registration_from_ip?(record.ip_address) + record.errors.add(attribute, I18n.t('user.ip_address.max_new_accounts_per_registration_ip')) + end end end diff --git a/spec/components/validators/allowed_ip_address_validator_spec.rb b/spec/components/validators/allowed_ip_address_validator_spec.rb index 4834528588f..c898cc73dbd 100644 --- a/spec/components/validators/allowed_ip_address_validator_spec.rb +++ b/spec/components/validators/allowed_ip_address_validator_spec.rb @@ -19,6 +19,7 @@ describe AllowedIpAddressValidator do SpamHandler.stubs(:should_prevent_registration_from_ip?).returns(true) validate expect(record.errors[:ip_address]).to be_present + expect(record.errors[:ip_address][0]).to eq(I18n.t('user.ip_address.max_new_accounts_per_registration_ip')) end end