From 6bf680882cc3a08c4eab637a05edf11df93fa41f Mon Sep 17 00:00:00 2001 From: Arpit Jalan Date: Mon, 1 Jun 2015 10:16:25 +0530 Subject: [PATCH] Better error message when new registration limit from an IP address is reached --- config/locales/server.en.yml | 1 + lib/validators/allowed_ip_address_validator.rb | 6 ++++-- .../validators/allowed_ip_address_validator_spec.rb | 1 + 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/config/locales/server.en.yml b/config/locales/server.en.yml index 069e21235..51ac9287d 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 5094a9bcb..461ad3449 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 483452858..c898cc73d 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