password_schema_validator 1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: b6a050876c9e52b3c0d1e004c7ff566d20255454
|
4
|
+
data.tar.gz: 9bc70bad18ed320458c073ca8dfa62ae5360855a
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: daf377779da1568b33d9cfd1ea26ba429e12a7fdd5f05e3049cc0cff7ce89c650c575c3bff7f80e0eb95788b8a5dd72e85a42eaa18199ab40fe45bc1ed3869e3
|
7
|
+
data.tar.gz: 9e2cb762ba6374522d8cd29849dbcb426f6d0e520c768523abe81acd5ad7916c673c72dc455dd332e4e44e73c810aa611c889ff9fb75e4356b2933c49b8a98c8
|
@@ -0,0 +1,83 @@
|
|
1
|
+
require_relative 'class_specifier'
|
2
|
+
|
3
|
+
module SchemaHelperMethods
|
4
|
+
include ClassSpecifier
|
5
|
+
|
6
|
+
RESERVED_OPTIONS = {
|
7
|
+
min_len: :integer,
|
8
|
+
max_len: :integer,
|
9
|
+
lower_case: :boolean,
|
10
|
+
upper_case: :boolean,
|
11
|
+
digits: :boolean,
|
12
|
+
special_charecters: :boolean,
|
13
|
+
allowed_special_chareters: :array,
|
14
|
+
discarded_words: :array,
|
15
|
+
dictionary: :boolean
|
16
|
+
}
|
17
|
+
|
18
|
+
def match_against_schema(record, attr_name, string)
|
19
|
+
options.each do |attribute|
|
20
|
+
key, value = attribute
|
21
|
+
error_msg = send(key, value, string)
|
22
|
+
record.errors.add(attr_name, error_msg, options) if error_msg
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def min_len(minValue, string)
|
27
|
+
return "must be minimum " + minValue.to_s + " charecter long" if string.length < minValue.to_i
|
28
|
+
end
|
29
|
+
|
30
|
+
def max_len(maxValue, string)
|
31
|
+
return "must be maximum " + maxValue.to_s + " charecter long" if string.length > maxValue.to_i
|
32
|
+
end
|
33
|
+
|
34
|
+
def lower_case(validate, string)
|
35
|
+
return "must contain lower-case letters" if validate && !(/[a-z]+/ =~ string)
|
36
|
+
end
|
37
|
+
|
38
|
+
def upper_case(validate, string)
|
39
|
+
return "must contain upper-case letters" if validate && !(/[A-Z]+/ =~ string)
|
40
|
+
end
|
41
|
+
|
42
|
+
def digits(validate, string)
|
43
|
+
return "must contain digits" if validate && !(/\d+/ =~ string)
|
44
|
+
end
|
45
|
+
|
46
|
+
def special_charecters(validate, string)
|
47
|
+
return "must contain special charecters" if validate && !(/[`~\!@#\$%\^\&\*\(\)\-_\=\+\[\{\}\]\\\|;:'",<.>\/\?]+/ =~ string)
|
48
|
+
end
|
49
|
+
|
50
|
+
def allowed_special_chareters
|
51
|
+
end
|
52
|
+
|
53
|
+
def discarded_words(black_listed_words, string)
|
54
|
+
return "must not be in the discarded words" if black_listed_words.map(&:downcase).include?(string.downcase)
|
55
|
+
end
|
56
|
+
|
57
|
+
def dictionary
|
58
|
+
end
|
59
|
+
|
60
|
+
def validate_schema(options)
|
61
|
+
options.each do |attribute|
|
62
|
+
validate_attribute(attribute)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
def validate_attribute(attribute)
|
67
|
+
key, value = attribute
|
68
|
+
if RESERVED_OPTIONS[key.to_sym].nil?
|
69
|
+
raise ArgumentError, invalid_key_error(key)
|
70
|
+
elsif !send(RESERVED_OPTIONS[key.to_sym]).include?(value.class)
|
71
|
+
raise ArgumentError, invalid_value_type(key, RESERVED_OPTIONS[key.to_sym])
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
def invalid_key_error(key)
|
76
|
+
"Invalid key - '" + key.to_s + "' passed to the schema. Provide a valid permitted key."
|
77
|
+
end
|
78
|
+
|
79
|
+
def invalid_value_type(key, expected_type)
|
80
|
+
"'" + key.to_s + "' must be of type " + expected_type.to_s
|
81
|
+
end
|
82
|
+
|
83
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require_relative 'schema_helper_methods'
|
2
|
+
|
3
|
+
module ActiveModel
|
4
|
+
module Validations
|
5
|
+
class WithSchemaValidator < EachValidator
|
6
|
+
include SchemaHelperMethods
|
7
|
+
|
8
|
+
def initialize(options)
|
9
|
+
filtered_options = filter_options(options)
|
10
|
+
validate_schema(filtered_options)
|
11
|
+
|
12
|
+
super
|
13
|
+
end
|
14
|
+
|
15
|
+
def validate_each(record, attr_name, value)
|
16
|
+
match_against_schema(record, attr_name, value)
|
17
|
+
end
|
18
|
+
|
19
|
+
def filter_options(options)
|
20
|
+
options.except(:attributes, :class)
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
metadata
ADDED
@@ -0,0 +1,105 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: password_schema_validator
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: '1.0'
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Utkarsh Rai
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-04-23 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 1.0.0
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 1.0.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: sqlite3-ruby
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '2.3'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '2.3'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: activerecord
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 4.0.0
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 4.0.0
|
69
|
+
description:
|
70
|
+
email:
|
71
|
+
- utkarshrai003@gmail.com
|
72
|
+
executables: []
|
73
|
+
extensions: []
|
74
|
+
extra_rdoc_files: []
|
75
|
+
files:
|
76
|
+
- lib/password_schema_validator.rb
|
77
|
+
- lib/password_schema_validator/class_specifier.rb
|
78
|
+
- lib/password_schema_validator/schema_helper_methods.rb
|
79
|
+
- lib/password_schema_validator/with_schema_validator.rb
|
80
|
+
homepage: https://github.com/utkarshrai003/password_schema_validator
|
81
|
+
licenses:
|
82
|
+
- MIT
|
83
|
+
metadata: {}
|
84
|
+
post_install_message:
|
85
|
+
rdoc_options: []
|
86
|
+
require_paths:
|
87
|
+
- lib
|
88
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
89
|
+
requirements:
|
90
|
+
- - ">="
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: '0'
|
93
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
94
|
+
requirements:
|
95
|
+
- - ">="
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: '0'
|
98
|
+
requirements: []
|
99
|
+
rubyforge_project:
|
100
|
+
rubygems_version: 2.6.11
|
101
|
+
signing_key:
|
102
|
+
specification_version: 4
|
103
|
+
summary: An activeModel Validator that provides a quick and easy way to validate a
|
104
|
+
password against a user defined schema
|
105
|
+
test_files: []
|