cop-detective 0.0.5 → 0.1.1
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 +4 -4
- data/lib/assigner.rb +54 -0
- data/lib/cop_detective.rb +35 -6
- data/lib/errors.rb +23 -2
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ca77cdd89eaac87cba49126671a8350a3c592949
|
4
|
+
data.tar.gz: ee1745a7548c93a6806eb167b02d765a323c907d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8fdbaa7ae0bd3025b590c5ec2c416fbdc1f4267c54de17a5f3ded0813f9e73a0d43c8ef4d8dda48905c01a009af55901e1bfa7a68e50afb7eb119d257542f83a
|
7
|
+
data.tar.gz: 0c7e59fe8e62e9c511c634e779bc5e5eb8922fabf5b06e7e59949df1692878da06af72938037bf92945263a5443b91097de4d2297a93707767c54552dcbfc471
|
data/lib/assigner.rb
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
require 'active_support'
|
2
|
+
require 'active_record'
|
3
|
+
require_relative 'cop_detective'
|
4
|
+
class CopDetectiveAssigner
|
5
|
+
|
6
|
+
@@keychain = []
|
7
|
+
@@params = Hash.new(nil)
|
8
|
+
|
9
|
+
class << self
|
10
|
+
|
11
|
+
def build_params(params)
|
12
|
+
@@keychain
|
13
|
+
params.each do |k, v|
|
14
|
+
if v.is_a?(Hash)
|
15
|
+
build_params(v)
|
16
|
+
end
|
17
|
+
@@params[k] = v if @@keychain.include?(k)
|
18
|
+
end
|
19
|
+
@@params
|
20
|
+
end
|
21
|
+
|
22
|
+
def assign(params, keys)
|
23
|
+
set_keychain(keys)
|
24
|
+
build_params(params)
|
25
|
+
translate_keys
|
26
|
+
configure
|
27
|
+
end
|
28
|
+
|
29
|
+
def set_keychain(keys)
|
30
|
+
@@keys = keys
|
31
|
+
keys.each do |k, v|
|
32
|
+
@@keychain << v
|
33
|
+
end
|
34
|
+
@@keychain
|
35
|
+
end
|
36
|
+
|
37
|
+
def translate_keys
|
38
|
+
@@internal_keys = @@keys
|
39
|
+
@@internal_keys.each do |k, v|
|
40
|
+
@@internal_keys[k] = @@params[v]
|
41
|
+
end
|
42
|
+
@@internal_keys
|
43
|
+
end
|
44
|
+
|
45
|
+
def configure
|
46
|
+
old_password = @@internal_keys[:old_password] || nil
|
47
|
+
password = @@internal_keys[:password]
|
48
|
+
confirmation = @@internal_keys[:confirmation]
|
49
|
+
CopDetective.configure({old_password: old_password,
|
50
|
+
password: password,
|
51
|
+
confirmation: confirmation})
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
data/lib/cop_detective.rb
CHANGED
@@ -3,18 +3,45 @@ require 'active_support'
|
|
3
3
|
require 'active_record'
|
4
4
|
require_relative 'errors'
|
5
5
|
require_relative 'validator'
|
6
|
+
require_relative 'assigner'
|
6
7
|
|
7
8
|
class CopDetective
|
8
9
|
cattr_reader :messages
|
9
|
-
class << self
|
10
10
|
include ActiveModel::SecurePassword
|
11
11
|
@@messages = CopDetectiveValidator.messages
|
12
12
|
|
13
|
+
class << self
|
14
|
+
|
13
15
|
def configure(options)
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
16
|
+
@@old_password = options[:old_password]
|
17
|
+
@@password = options[:password]
|
18
|
+
@@confirmation = options[:confirmation]
|
19
|
+
end
|
20
|
+
|
21
|
+
def set_keys(keys)
|
22
|
+
raise CopDetective::ErrorMessages.wrong_datatype if keys.class != Hash
|
23
|
+
inspect_keys(keys)
|
24
|
+
inspect_values(keys)
|
25
|
+
@@keys = keys
|
26
|
+
end
|
27
|
+
|
28
|
+
def investigate(user, params)
|
29
|
+
assign(params, @@keys)
|
30
|
+
return create_user(user) if @@old_password == nil
|
31
|
+
update_user(user)
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
def inspect_keys(keys)
|
37
|
+
keys.each do |k, v|
|
38
|
+
raise CopDetective::ErrorMessages.formatting if k != :confirmation && k != :password && k != :old_password
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def inspect_values(keys)
|
43
|
+
keys.each do |k, v|
|
44
|
+
raise CopDetective::ErrorMessages.options_error(k) if v.class != Symbol
|
18
45
|
end
|
19
46
|
end
|
20
47
|
|
@@ -32,7 +59,9 @@ class CopDetective
|
|
32
59
|
end
|
33
60
|
end
|
34
61
|
|
35
|
-
|
62
|
+
def assign(params, keys)
|
63
|
+
CopDetectiveAssigner.assign(params, keys)
|
64
|
+
end
|
36
65
|
|
37
66
|
def validate_new_passwords(user)
|
38
67
|
CopDetectiveValidator.validate_new_passwords(user, @@password, @@confirmation)
|
data/lib/errors.rb
CHANGED
@@ -9,6 +9,27 @@ class CopDetective
|
|
9
9
|
"You entered your original password incorrectly."
|
10
10
|
end
|
11
11
|
|
12
|
+
def wrong_datatype
|
13
|
+
'You must pass a hash to the set_keys method'
|
14
|
+
end
|
15
|
+
|
16
|
+
def formatting
|
17
|
+
<<-MESSAGE
|
18
|
+
The keys in the hash you pass to #set_keys must be as follows:
|
19
|
+
password:
|
20
|
+
confirmation:
|
21
|
+
old_password:
|
22
|
+
|
23
|
+
the values you pass should reflect keys in your params hash.
|
24
|
+
a correctly configured hash would look similar to this:
|
25
|
+
{
|
26
|
+
password: :new_password,
|
27
|
+
confirmation: :password_again,
|
28
|
+
old_password: :original_password
|
29
|
+
}
|
30
|
+
MESSAGE
|
31
|
+
end
|
32
|
+
|
12
33
|
def non_matching
|
13
34
|
"Your new passwords don't match."
|
14
35
|
end
|
@@ -17,8 +38,8 @@ class CopDetective
|
|
17
38
|
flash[:error] = model.errors.full_messages
|
18
39
|
end
|
19
40
|
|
20
|
-
def options_error(key
|
21
|
-
|
41
|
+
def options_error(key)
|
42
|
+
"Option passed to #{key} must be a symbol."
|
22
43
|
end
|
23
44
|
end
|
24
45
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cop-detective
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jordan Kamin
|
@@ -53,12 +53,13 @@ dependencies:
|
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '3.1'
|
55
55
|
description: A simple gem to use in your controller to remove some of the work of
|
56
|
-
comparing passwords and confirmations.
|
56
|
+
comparing passwords and password confirmations.
|
57
57
|
email: jordanakamin@gmail.com
|
58
58
|
executables: []
|
59
59
|
extensions: []
|
60
60
|
extra_rdoc_files: []
|
61
61
|
files:
|
62
|
+
- lib/assigner.rb
|
62
63
|
- lib/cop_detective.rb
|
63
64
|
- lib/errors.rb
|
64
65
|
- lib/validator.rb
|