validates_email_whitelist_of 1.0.2 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
data/README.markdown
CHANGED
@@ -16,23 +16,28 @@ Then on ActiveRecord 2.0+ you can do
|
|
16
16
|
|
17
17
|
class User < ActiveRecord::Base
|
18
18
|
validates_email_whitelist_of :email, :whitelist => ['example.com', 'google.com']
|
19
|
+
|
20
|
+
validates_email_blacklist_of :email, :blacklist => ['123.com']
|
19
21
|
end
|
20
22
|
|
21
23
|
On ActiveRecord 3.0+ you can do
|
22
24
|
|
23
25
|
class User < ActiveRecord::Base
|
24
|
-
validates :email, :whitelist =>
|
26
|
+
validates :email, :whitelist => ['example.com', 'google.com']
|
27
|
+
validates :email, :blacklist => ['123.com']
|
25
28
|
end
|
26
29
|
|
27
30
|
If you want to use I18n, make sure you add the scope
|
28
31
|
|
29
32
|
`activerecord.errors.messages.invalid_email`
|
30
33
|
`activerecord.errors.messages.invalid_whitelist`
|
34
|
+
`activerecord.errors.messages.invalid_blacklist`
|
31
35
|
|
32
36
|
or
|
33
37
|
|
34
38
|
`errors.messages.invalid_email`
|
35
39
|
`errors.messages.invalid_whitelist`
|
40
|
+
`errors.messages.invalid_blacklist`
|
36
41
|
|
37
42
|
The following locales are builtin:
|
38
43
|
|
data/config/locales/en.yml
CHANGED
@@ -4,7 +4,9 @@ en:
|
|
4
4
|
messages:
|
5
5
|
invalid_email: "is not a valid address"
|
6
6
|
invalid_whitelist: "is not an allowed email"
|
7
|
+
invalid_blacklist: "is not an allowed email"
|
7
8
|
errors:
|
8
9
|
messages:
|
9
10
|
invalid_email: "is not a valid e-mail"
|
10
11
|
invalid_whitelist: "is not an allowed email"
|
12
|
+
invalid_blacklist: "is not an allowed email"
|
data/config/locales/pt.yml
CHANGED
@@ -4,10 +4,12 @@ pt: &pt
|
|
4
4
|
messages:
|
5
5
|
invalid_email: "não parece ser um e-mail válido"
|
6
6
|
invalid_whitelist: "não é um e-mail permitido"
|
7
|
+
invalid_blacklist: "não é um e-mail permitido"
|
7
8
|
errors:
|
8
9
|
messages:
|
9
10
|
invalid_email: "não parece ser um e-mail válido"
|
10
11
|
invalid_whitelist: "não é um e-mail permitido"
|
12
|
+
invalid_blacklist: "não é um e-mail permitido"
|
11
13
|
|
12
14
|
pt-BR:
|
13
15
|
<<: *pt
|
@@ -20,6 +20,27 @@ module SimplesIdeias
|
|
20
20
|
end
|
21
21
|
end
|
22
22
|
end
|
23
|
+
|
24
|
+
def validates_email_blacklist_of(*attr_names)
|
25
|
+
options = {
|
26
|
+
:on => :save,
|
27
|
+
:allow_nil => false,
|
28
|
+
:allow_blank => false,
|
29
|
+
:blacklist => []
|
30
|
+
}
|
31
|
+
|
32
|
+
options.update(attr_names.pop) if attr_names.last.kind_of?(Hash)
|
33
|
+
|
34
|
+
validates_each(attr_names, options) do |record, attr_name, value|
|
35
|
+
if value.to_s =~ EMAIL_FORMAT
|
36
|
+
message = ::I18n.t(:invalid_blacklist, :scope => 'activerecord.errors.messages')
|
37
|
+
record.errors.add(attr_name, message) if options[:blacklist].include?($2)
|
38
|
+
else
|
39
|
+
message = ::I18n.translate(options[:message], :default => [:"activerecord.errors.messages.invalid_email", "is not a valid address"])
|
40
|
+
record.errors.add(attr_name, message)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
23
44
|
end
|
24
45
|
end
|
25
46
|
|
@@ -5,9 +5,13 @@ module ActiveModel
|
|
5
5
|
if value.to_s !~ SimplesIdeias::ValidatesEmailWhitelistOf::EMAIL_FORMAT
|
6
6
|
record.errors.add(attribute, :invalid_email, :default => options[:message], :value => value)
|
7
7
|
else
|
8
|
-
|
8
|
+
if options[:whitelist] && !options[:whitelist].include?($2)
|
9
9
|
record.errors.add(attribute, :invalid_whitelist, :default => options[:message], :value => value)
|
10
10
|
end
|
11
|
+
|
12
|
+
if options[:blacklist] && options[:blacklist].include?($2)
|
13
|
+
record.errors.add(attribute, :invalid_blacklist, :default => options[:message], :value => value)
|
14
|
+
end
|
11
15
|
end
|
12
16
|
end
|
13
17
|
end
|
@@ -16,6 +20,10 @@ module ActiveModel
|
|
16
20
|
def validates_email_whitelist_of(*attr_names)
|
17
21
|
validates_with EmailWhitelistValidator, _merge_attributes(attr_names)
|
18
22
|
end
|
23
|
+
|
24
|
+
def validates_email_blacklist_of(*attr_names)
|
25
|
+
validates_with EmailWhitelistValidator, _merge_attributes(attr_names)
|
26
|
+
end
|
19
27
|
end
|
20
28
|
end
|
21
29
|
end
|
@@ -1,8 +1,8 @@
|
|
1
1
|
spec = Gem::Specification.new do |s|
|
2
2
|
s.name = 'validates_email_whitelist_of'
|
3
3
|
|
4
|
-
s.version = '1.0
|
5
|
-
s.summary = 'Validates e-mail address format (RFC2822 and RFC3696) and whitelist the domain part.'
|
4
|
+
s.version = '1.1.0'
|
5
|
+
s.summary = 'Validates e-mail address format (RFC2822 and RFC3696) and whitelist/blacklist the domain part.'
|
6
6
|
s.description = "Rails 2 and Rails 3 plugin. #{s.summary}"
|
7
7
|
s.homepage = 'https://github.com/rubenfonseca/validates_email_whitelist_of'
|
8
8
|
s.extra_rdoc_files = ['README.markdown', 'MIT-LICENSE']
|
metadata
CHANGED
@@ -5,9 +5,9 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
|
+
- 1
|
8
9
|
- 0
|
9
|
-
|
10
|
-
version: 1.0.2
|
10
|
+
version: 1.1.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Ruben Fonseca
|
@@ -63,7 +63,7 @@ dependencies:
|
|
63
63
|
version: "0"
|
64
64
|
type: :development
|
65
65
|
version_requirements: *id003
|
66
|
-
description: Rails 2 and Rails 3 plugin. Validates e-mail address format (RFC2822 and RFC3696) and whitelist the domain part.
|
66
|
+
description: Rails 2 and Rails 3 plugin. Validates e-mail address format (RFC2822 and RFC3696) and whitelist/blacklist the domain part.
|
67
67
|
email: fonseka@gmail.com
|
68
68
|
executables: []
|
69
69
|
|
@@ -121,7 +121,7 @@ rubyforge_project:
|
|
121
121
|
rubygems_version: 1.7.2
|
122
122
|
signing_key:
|
123
123
|
specification_version: 3
|
124
|
-
summary: Validates e-mail address format (RFC2822 and RFC3696) and whitelist the domain part.
|
124
|
+
summary: Validates e-mail address format (RFC2822 and RFC3696) and whitelist/blacklist the domain part.
|
125
125
|
test_files:
|
126
126
|
- spec/spec_helper.rb
|
127
127
|
- spec/validates_email_format_of_spec.rb
|