google-authenticator-rails 1.6.0 → 1.6.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 19391728ca506273484c8691492ba1a09b2024ae
4
- data.tar.gz: 57e4b1ce9b77074db2be9212b73a6a8f6f43ee02
3
+ metadata.gz: 1b4d33cb46c087f9315de98ad520bdfed5d00827
4
+ data.tar.gz: 76e15144dc492f42822ebd9fef02f0685e7e712e
5
5
  SHA512:
6
- metadata.gz: e87812aca056ca5be5474fd3384bc7851104254db7b325949988e16fa3ac12546b6581f8394d301a8b3f800a6a305404dcb766f16d609756a285ee3806ed7b04
7
- data.tar.gz: d13dd058fb08ab3dba40d126daabaaf2e52ad0c8c59124f099cab59dac30437268f01b3315443c5bf0b8a294d3c3b0bb01a99eecd0910a1c7a1a3f4ce9114e8a
6
+ metadata.gz: 7bfc4dcca348c1b11e6c9e1147c7a3447024d5dfd87a8dbf0ae2ae922c7ebaa69b75e3489784d641032e0c2f72bf42bc719dd8e34515ae0ef0fa8d8e16ea302f
7
+ data.tar.gz: 9f453df41489951b4926ec42d33728e163524fc75098a8c9f18a4ed9f955fbdc5aa65dc26220966e86a2c86a2ea7a37e6115655887858ced4e839664513af006
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- google-authenticator-rails (1.6.0)
4
+ google-authenticator-rails (1.6.1)
5
5
  actionpack
6
6
  activerecord
7
7
  google-qr
@@ -1,3 +1,3 @@
1
1
  module GoogleAuthenticatorRails
2
- VERSION = "1.6.0"
2
+ VERSION = "1.6.1"
3
3
  end
@@ -0,0 +1,55 @@
1
+ namespace :google_authenticator do
2
+
3
+ def do_encrypt(args, already_encrypted, op_name)
4
+ model_names = if args[:optional_model_list]
5
+ args.extras.unshift(args[:optional_model_list])
6
+ else
7
+ # Adapted from https://stackoverflow.com/a/8248849/7478194
8
+ Dir[Rails.root.join('app/models/*.rb').to_s].map { |filename| File.basename(filename, '.rb').camelize }
9
+ end
10
+
11
+ ActiveRecord::Base.transaction do
12
+ match_op = " = #{already_encrypted ? 138 : 16}"
13
+ model_names.each do |model_name|
14
+ klass = model_name.constantize
15
+ next unless klass.ancestors.include?(ActiveRecord::Base) && klass.try(:google_secrets_encrypted)
16
+ print "#{op_name}ing model #{klass.name.inspect} (table #{klass.table_name.inspect}): "
17
+ count = 0
18
+ klass.where("LENGTH(#{klass.google_secret_column})#{match_op}").find_each do |record|
19
+ yield record
20
+ count += 1
21
+ end
22
+ puts "#{count} #{'secret'.pluralize(count)} #{op_name}ed"
23
+ end
24
+ end
25
+ end
26
+
27
+ desc 'Encrypt all secret columns (add the :encrypt_secrets options *before* running)'
28
+ task :encrypt_secrets, [:optional_model_list] => :environment do |_t, args|
29
+ do_encrypt(args, false, 'Encrypt') { |record| record.encrypt_google_secret! }
30
+ end
31
+
32
+ desc 'Re-encrypt all secret columns from old_secret_key_base to secret_key_base'
33
+ task :reencrypt_secrets, [:optional_model_list] => :environment do |_t, args|
34
+ if Rails.application.secrets.old_secret_key_base.blank?
35
+ puts 'old_secret_key_base is not set in config/secrets.yml'
36
+ else
37
+ secret_encryptor = GoogleAuthenticatorRails::ActiveRecord::Helpers.get_google_secret_encryptor
38
+ Rails.application.secrets[:secret_key_base] = Rails.application.secrets.old_secret_key_base
39
+ Rails.application.instance_eval { @caching_key_generator = nil }
40
+ old_secret_encryptor = GoogleAuthenticatorRails::ActiveRecord::Helpers.get_google_secret_encryptor
41
+ do_encrypt(args, true, 'Re-encrypt') do |record|
42
+ GoogleAuthenticatorRails.secret_encryptor = old_secret_encryptor
43
+ plain_secret = record.google_secret_value
44
+ GoogleAuthenticatorRails.secret_encryptor = secret_encryptor
45
+ record.send(:change_google_secret_to!, plain_secret)
46
+ end
47
+ end
48
+ end
49
+
50
+ desc 'Decrypt all secret columns (remove the :encrypt_secrets options *after* running)'
51
+ task :decrypt_secrets, [:optional_model_list] => :environment do |_t, args|
52
+ do_encrypt(args, true, 'Decrypt') { |record| record.send(:change_google_secret_to!, record.google_secret_value, false) }
53
+ end
54
+
55
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: google-authenticator-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.0
4
+ version: 1.6.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jared McFarland
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-05-02 00:00:00.000000000 Z
11
+ date: 2018-05-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rotp
@@ -177,6 +177,7 @@ files:
177
177
  - lib/google-authenticator-rails/session/base.rb
178
178
  - lib/google-authenticator-rails/session/persistence.rb
179
179
  - lib/google-authenticator-rails/version.rb
180
+ - lib/tasks/google_authenticator.rake
180
181
  - spec/action_controller/integration_spec.rb
181
182
  - spec/action_controller/rails_adapter_spec.rb
182
183
  - spec/google_authenticator_spec.rb