voltron-encrypt 0.1.3 → 0.1.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0fa0e956bb62d9eedaa51594c9f35b0bb66c9fa8
4
- data.tar.gz: 28c0cebba4890bd456fc9e8a6f60e1fd8192d5e0
3
+ metadata.gz: 3bec1a7a6c6807648a8bb6e1debc10e4d098bc45
4
+ data.tar.gz: a1b95933e6526a729d390bff947d0b43bf3ffb39
5
5
  SHA512:
6
- metadata.gz: b2c03a252f4d9b9ee081879d6bb3330c21a1a20c3b49908358560c311ed58ea97636739dbdb100c646294df0b15f6d4f0ed7675ff7bcf92085ba69801aa516a6
7
- data.tar.gz: 01f2f3b14b42deaf7f25592ca91f36f74ff9aba78ff504e61ee453d8925698d4929a24ed0363359448cfa8df1a7665f6a9a35a5776f9303961b4af7e2bb053e8
6
+ metadata.gz: a5b2737a2169939aa466511a8753918a8cf65adde2cabe0cbd9099895d8ac46fd2aa0b03cef14300e5d0661fc8e07c9016b71f92965392902aa43609d9c0baf3
7
+ data.tar.gz: ac229008eb3831e1fabb5f92244c33d5602339f6fee7f636405a84bc3ca65ac9abe3881bd1ebf0652501aeb90fd39a9ab91177e606f7f70c5edaa5c886c3b215
data/.gitignore CHANGED
@@ -9,4 +9,5 @@
9
9
  tmp/
10
10
  log/
11
11
  voltron-*.gem
12
- *.bak
12
+ *.bak
13
+ *.sqlite3
@@ -0,0 +1,37 @@
1
+ module Voltron
2
+ class Encrypt
3
+ module ActiveRecord
4
+ module CollectionAssociation
5
+
6
+ def ids_writer(ids)
7
+ if klass.has_encrypted_id?
8
+ ids.reject!(&:blank?)
9
+ replace(klass.find(ids))
10
+ else
11
+ super ids
12
+ end
13
+ end
14
+
15
+ def ids_reader
16
+ if loaded?
17
+ load_target.map do |record|
18
+ if klass.has_encrypted_id?
19
+ record.to_param
20
+ else
21
+ record.send(reflection.association_primary_key)
22
+ end
23
+ end
24
+ else
25
+ if klass.has_encrypted_id?
26
+ scope.map(&:to_param)
27
+ else
28
+ column = "#{reflection.quoted_table_name}.#{reflection.association_primary_key}"
29
+ scope.pluck(column)
30
+ end
31
+ end
32
+ end
33
+
34
+ end
35
+ end
36
+ end
37
+ end
@@ -6,6 +6,7 @@ module Voltron
6
6
 
7
7
  initializer "voltron.encrypt.initialize" do
8
8
  ::ActiveRecord::Base.send :extend, ::Voltron::Encryptable
9
+ ::ActiveRecord::Associations::CollectionAssociation.send :prepend, ::Voltron::Encrypt::ActiveRecord::CollectionAssociation
9
10
 
10
11
  # Corrects sidekiq resource lookup by forcing it to find_by_id rather than find with the model id
11
12
  # We either want it to find with to_param value, or find_by_id with the actual id, this is the latter
@@ -1,5 +1,5 @@
1
1
  module Voltron
2
2
  class Encrypt
3
- VERSION = "0.1.3".freeze
3
+ VERSION = "0.1.4".freeze
4
4
  end
5
5
  end
@@ -2,6 +2,7 @@ require "voltron"
2
2
  require "voltron/encrypt/version"
3
3
  require "voltron/config/encrypt"
4
4
  require "voltron/encryptable"
5
+ require "voltron/encrypt/active_record/collection_association"
5
6
 
6
7
  module Voltron
7
8
  class Encrypt
@@ -49,15 +50,15 @@ module Voltron
49
50
  !blacklist(encoded.length).match(regex).nil?
50
51
  end
51
52
 
52
- private
53
-
54
- def blacklist(len = 6)
55
- if File.exist?(Voltron.config.encrypt.blacklist.to_s)
56
- File.readlines(Voltron.config.encrypt.blacklist).map(&:strip).reject { |line| line.length > len }.join(" ")
57
- else
58
- ""
59
- end
53
+ def blacklist(len = 6)
54
+ if File.exist?(Voltron.config.encrypt.blacklist.to_s)
55
+ File.readlines(Voltron.config.encrypt.blacklist).map(&:strip).reject { |line| line.length > len }.join(" ")
56
+ else
57
+ ""
60
58
  end
59
+ end
60
+
61
+ private
61
62
 
62
63
  def translations
63
64
  {
@@ -1,6 +1,10 @@
1
1
  module Voltron
2
2
  module Encryptable
3
3
 
4
+ def has_encrypted_id?
5
+ false
6
+ end
7
+
4
8
  def encrypted_id
5
9
  extend ClassMethods
6
10
  include InstanceMethods
@@ -13,6 +17,10 @@ module Voltron
13
17
  end
14
18
 
15
19
  module ClassMethods
20
+ def has_encrypted_id?
21
+ true
22
+ end
23
+
16
24
  def find(*args)
17
25
  scope = args.slice!(0)
18
26
  options = args.slice!(0) || {}
@@ -20,7 +28,7 @@ module Voltron
20
28
  if !options[:bypass] && ![:first, :last, :all].include?(scope.try(:to_sym))
21
29
  scope = decoded_ids(scope)
22
30
  end
23
-
31
+
24
32
  super(scope)
25
33
  end
26
34
 
@@ -21,6 +21,7 @@ Gem::Specification.new do |spec|
21
21
  spec.add_dependency "rails", ">= 4.2"
22
22
  spec.add_dependency "voltron", ">= 0.1.0"
23
23
 
24
+ spec.add_development_dependency "byebug"
24
25
  spec.add_development_dependency "bundler", ">= 1.12"
25
26
  spec.add_development_dependency "rake", ">= 10.0"
26
27
  spec.add_development_dependency "rspec", ">= 3.0"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: voltron-encrypt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eric Hainer
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-10-28 00:00:00.000000000 Z
11
+ date: 2016-11-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: 0.1.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: byebug
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: bundler
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -145,6 +159,7 @@ files:
145
159
  - lib/generators/voltron/encrypt/install_generator.rb
146
160
  - lib/voltron/config/encrypt.rb
147
161
  - lib/voltron/encrypt.rb
162
+ - lib/voltron/encrypt/active_record/collection_association.rb
148
163
  - lib/voltron/encrypt/engine.rb
149
164
  - lib/voltron/encrypt/version.rb
150
165
  - lib/voltron/encryptable.rb
@@ -169,7 +184,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
169
184
  version: '0'
170
185
  requirements: []
171
186
  rubyforge_project:
172
- rubygems_version: 2.4.8
187
+ rubygems_version: 2.5.1
173
188
  signing_key:
174
189
  specification_version: 4
175
190
  summary: Enables base 64 encoded ids on rails models