Merge pull request #3508 from techAPJ/patch-2

Better error message when new registration limit from an IP address is reached
This commit is contained in:
Régis Hanol 2015-06-01 09:57:24 +02:00
commit 296b8b1a35
3 changed files with 6 additions and 2 deletions

View file

@ -1287,6 +1287,7 @@ en:
blocked: "is not allowed." blocked: "is not allowed."
ip_address: ip_address:
blocked: "is blocked." 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: invite_mailer:
subject_template: "%{invitee_name} invited you to '%{topic_title}' on %{site_domain_name}" subject_template: "%{invitee_name} invited you to '%{topic_title}' on %{site_domain_name}"

View file

@ -4,10 +4,12 @@ class AllowedIpAddressValidator < ActiveModel::EachValidator
def validate_each(record, attribute, value) def validate_each(record, attribute, value)
if record.ip_address if record.ip_address
if ScreenedIpAddress.should_block?(record.ip_address) || if ScreenedIpAddress.should_block?(record.ip_address)
(record.trust_level == TrustLevel[0] && SpamHandler.should_prevent_registration_from_ip?(record.ip_address))
record.errors.add(attribute, options[:message] || I18n.t('user.ip_address.blocked')) record.errors.add(attribute, options[:message] || I18n.t('user.ip_address.blocked'))
end 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
end end

View file

@ -19,6 +19,7 @@ describe AllowedIpAddressValidator do
SpamHandler.stubs(:should_prevent_registration_from_ip?).returns(true) SpamHandler.stubs(:should_prevent_registration_from_ip?).returns(true)
validate validate
expect(record.errors[:ip_address]).to be_present 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
end end