devise-argon2 2.0.1 → 2.0.2

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
  SHA256:
3
- metadata.gz: d036bff0c949c49457df0df4a4ac902d4ed0e65e84fd26f2940bfcc973b6bcc3
4
- data.tar.gz: 82024dfd476f476514c5548b4aac5a93c49ffffad6fe33252c153381d0b803c1
3
+ metadata.gz: 7542aed226ac27c831a5f6acdbb6011fe8b6632e83a60902341c4f44bad38b27
4
+ data.tar.gz: 63891613bb7343641df64221d56533f646543c8eb0c8b3f9fe32186a4f4c46df
5
5
  SHA512:
6
- metadata.gz: fb3857086fc9f31fd22bec613c3fe9e93534234036db242c49b1e5aae6ac9340611916e62ec92f84e67b8fafe97610b6d947c98df7846e62d91d9e550586689b
7
- data.tar.gz: b7e523688dab140c94d9aed10232a57a1dcb144b437073d8ec41952fe0595f8713215d5ed9658701927f50182d2cf49adb0fd7bc5792d21255edaf70ffa603f5
6
+ metadata.gz: 958d4df9feceff3bb4b28c85eed86f0072cd9914ba7f00cfdc26379def7af570647812fb72e14303b02ad435d4e8450d6cbc63b76a7b23380de1218828fac365
7
+ data.tar.gz: f639d484fe68ff7d39df88511a06c15b4518ddce58cf02057d39f99524aa5942af83427bb2268f66fe2facd36c30cb72477782f903d2d17e1dfd8f7e644a4fc7
@@ -1,51 +1,70 @@
1
1
  name: Test suite
2
2
 
3
- on: [push, pull_request]
3
+ on: [push, pull_request, workflow_dispatch]
4
4
 
5
5
  jobs:
6
6
  test:
7
7
  runs-on: ubuntu-latest
8
8
  strategy:
9
9
  matrix:
10
- ruby-version: ['2.7', '3.0', '3.1', '3.2', 'ruby-head']
11
- rails-version: ['~> 7.0', '~> 6.1']
10
+ ruby-version: ['2.7', '3.0', '3.1', '3.2', '3.3']
11
+ rails-version: ['~> 6.1', '~> 7.0', '~> 7.1', '~> 7.2', '8.0.0.beta1']
12
12
  argon2-version: ['2.2', '2.3']
13
13
  orm:
14
14
  - adapter: active_record
15
15
  - adapter: mongoid
16
- mongoid-version: 8.1.2
16
+ mongoid-version: 9.0.2
17
17
  - adapter: mongoid
18
- mongoid-version: 8.0.6
18
+ mongoid-version: 8.1.6
19
+ - adapter: mongoid
20
+ mongoid-version: 8.0.8
19
21
  - adapter: mongoid
20
22
  mongoid-version: 7.5.4
21
- include:
22
- - rails-version: '~> 6.1'
23
- ruby-version: '3.1'
24
- argon2-version: '2.3'
25
- devise-version: '4.8'
26
- orm:
27
- adapter: active_record
28
- - rails-version: '~> 7.1'
23
+ exclude:
24
+ - rails-version: '~> 7.2'
25
+ ruby-version: '2.7'
26
+ - rails-version: '~> 7.2'
27
+ ruby-version: '3.0'
28
+ - rails-version: '8.0.0.beta1'
29
+ ruby-version: '2.7'
30
+ - rails-version: '8.0.0.beta1'
31
+ ruby-version: '3.0'
32
+ - rails-version: '8.0.0.beta1'
29
33
  ruby-version: '3.1'
30
- argon2-version: '2.3'
31
- devise-version: '4.9'
32
- orm:
33
- adapter: active_record
34
- - rails-version: '~> 7.1'
34
+ - orm:
35
+ adapter: mongoid
36
+ rails-version: '8.0.0.beta1'
37
+ - orm:
38
+ adapter: mongoid
39
+ mongoid-version: 8.0.8
40
+ ruby-version: '3.3'
41
+ - orm:
42
+ adapter: mongoid
43
+ mongoid-version: 8.0.8
35
44
  ruby-version: '3.2'
36
- argon2-version: '2.3'
37
- devise-version: '4.9'
38
- orm:
39
- adapter: active_record
40
- - rails-version: '~> 7.1'
41
- ruby-version: '3.1'
42
- argon2-version: '2.1'
43
- devise-version: '4.9'
44
- orm:
45
- adapter: active_record
45
+ - orm:
46
+ adapter: mongoid
47
+ mongoid-version: 7.5.4
48
+ ruby-version: '3.3'
49
+ - orm:
50
+ adapter: mongoid
51
+ mongoid-version: 7.5.4
52
+ ruby-version: '3.2'
53
+ - orm:
54
+ adapter: mongoid
55
+ mongoid-version: 8.0.8
56
+ rails-version: '~> 7.2'
57
+ - orm:
58
+ adapter: mongoid
59
+ mongoid-version: 7.5.4
60
+ rails-version: '~> 7.2'
61
+ - orm:
62
+ adapter: mongoid
63
+ mongoid-version: 7.5.4
64
+ rails-version: '~> 7.1'
46
65
  env:
47
66
  RAILS_VERSION: ${{ matrix.rails-version || '~> 7.0'}}
48
- MONGOID_VERSION: ${{ matrix.orm.mongoid-version || '8.1.2'}}
67
+ MONGOID_VERSION: ${{ matrix.orm.mongoid-version || '8.1.6'}}
49
68
  ORM: ${{ matrix.orm.adapter }}
50
69
  ARGON2_VERSION: ${{ matrix.argon2-version }}
51
70
  DEVISE_VERSION: ${{ matrix.devise-version || '~> 4.9' }}
@@ -56,6 +75,7 @@ jobs:
56
75
  with:
57
76
  ruby-version: ${{ matrix.ruby-version }}
58
77
  bundler-cache: true
78
+ cache-version: 1
59
79
  - uses: supercharge/mongodb-github-action@1.10.0
60
80
  if: ${{ matrix.orm.adapter == 'mongoid' }}
61
81
  - name: Setup rails test environment
data/CHANGELOG.md CHANGED
@@ -1,7 +1,15 @@
1
- # Changelog
1
+ # Changelog
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## [2.0.2] - 2024-09-30
6
+
7
+ ### Changed
8
+ - When migrating users from v1 to v2, the `encrypted_password` update will no longer trigger callbacks (ie send email to users)
9
+
10
+ ### Added
11
+ - Tests for newer dependency versions
12
+
5
13
  ## [2.0.1] - 2023-10-18
6
14
 
7
15
  ### Added
@@ -19,12 +27,12 @@
19
27
  - Add support for migrating bcrypt hashes
20
28
  - Add tests for Mongoid
21
29
  - Add Changelog :)
22
-
30
+
23
31
  ### Changed
24
32
  - Change salting / peppering mechanism
25
33
  - Change CI from Travis to GitHub Actions
26
-
27
- ### Removed
34
+
35
+ ### Removed
28
36
  - Remove `devise-encryptable` dependency
29
37
  - Remove superflous dependency on devise `password_salt` column
30
38
 
data/Gemfile CHANGED
@@ -5,7 +5,6 @@ gemspec
5
5
  gem 'rspec'
6
6
  gem 'simplecov'
7
7
  gem 'activerecord'
8
- gem 'sqlite3'
9
8
  gem 'rails', ENV['RAILS_VERSION'] || '~> 7.0'
10
9
  gem 'argon2', ENV['ARGON2_VERSION'] || '~> 2.3'
11
10
  gem 'devise', ENV['DEVISE_VERSION'] || '~> 4.9'
@@ -13,3 +12,9 @@ gem 'devise', ENV['DEVISE_VERSION'] || '~> 4.9'
13
12
  if ENV['ORM'] == 'mongoid'
14
13
  gem 'mongoid', ENV['MONGOID_VERSION'] || '~> 7.5'
15
14
  end
15
+
16
+ if ENV['RAILS_VERSION'] == '8.0.0.beta1'
17
+ gem 'sqlite3', '~> 2.1'
18
+ else
19
+ gem 'sqlite3', '~> 1.6', '>= 1.6.6'
20
+ end
@@ -53,8 +53,19 @@ module Devise
53
53
  attributes = { encrypted_password: password_digest(password) }
54
54
  attributes[:password_salt] = nil if migrate_hash_from_devise_argon2_v1?
55
55
 
56
- self.assign_attributes(attributes)
57
- self.save if self.persisted?
56
+ if self.persisted?
57
+ update_without_callbacks(attributes)
58
+ else
59
+ self.assign_attributes(attributes)
60
+ end
61
+ end
62
+
63
+ def update_without_callbacks(attributes)
64
+ if defined?(Mongoid) && Mongoid.models.include?(self.class)
65
+ self.set(attributes)
66
+ else
67
+ self.update_columns(attributes)
68
+ end
58
69
  end
59
70
 
60
71
  def outdated_work_factors?
@@ -1,5 +1,5 @@
1
1
  module Devise
2
2
  module Argon2
3
- ARGON2_VERSION = '2.0.1'
3
+ ARGON2_VERSION = '2.0.2'
4
4
  end
5
5
  end
@@ -19,6 +19,7 @@ describe Devise::Models::Argon2 do
19
19
  p_cost: DEFAULT_P_COST
20
20
  }
21
21
  User.destroy_all
22
+ OldUser.destroy_all
22
23
  end
23
24
 
24
25
  def work_factors(hash)
@@ -127,6 +128,14 @@ describe Devise::Models::Argon2 do
127
128
  it 'does not update the hash if an invalid password is given' do
128
129
  expect{ user.valid_password?(INCORRECT_PASSWORD) }.not_to(change(user, :encrypted_password))
129
130
  end
131
+
132
+ it 'does not send password change notification emails on hash updates' do
133
+ user.email = 'test@example.com'
134
+ user.save!
135
+ Devise.send_password_change_notification = true
136
+ expect{ user.valid_password?(CORRECT_PASSWORD) }
137
+ .not_to(change { ActionMailer::Base.deliveries.count })
138
+ end
130
139
  end
131
140
 
132
141
  describe 'updating outdated work factors' do
@@ -20,5 +20,7 @@ module DummyRailsApp
20
20
  config.eager_load = false
21
21
  config.autoload_paths.reject!{ |p| p =~ /\/app\/(\w+)$/ && !%w(controllers helpers mailers views).include?($1) }
22
22
  config.autoload_paths += ["#{config.root}/app/#{ORM}"]
23
+ config.action_mailer.delivery_method = :test
24
+ config.action_mailer.default_options = { from: 'test@example.com' }
23
25
  end
24
26
  end
@@ -0,0 +1,3 @@
1
+ Rails.application.routes.draw do
2
+ devise_for :old_users
3
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: devise-argon2
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
4
+ version: 2.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tamas Erdos
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2023-10-19 00:00:00.000000000 Z
12
+ date: 2024-09-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: devise
@@ -78,6 +78,7 @@ files:
78
78
  - spec/rails_app/config/environment.rb
79
79
  - spec/rails_app/config/initializers/devise.rb
80
80
  - spec/rails_app/config/mongoid.yml
81
+ - spec/rails_app/config/routes.rb
81
82
  - spec/rails_app/db/migrate/20230617201921_devise_create_users.rb
82
83
  - spec/rails_app/db/migrate/20231004084147_devise_create_old_users.rb
83
84
  - spec/rails_app/db/schema.rb
@@ -102,7 +103,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
102
103
  - !ruby/object:Gem::Version
103
104
  version: '0'
104
105
  requirements: []
105
- rubygems_version: 3.3.3
106
+ rubygems_version: 3.4.22
106
107
  signing_key:
107
108
  specification_version: 4
108
109
  summary: Enables Devise to hash passwords with Argon2id
@@ -127,6 +128,7 @@ test_files:
127
128
  - spec/rails_app/config/environment.rb
128
129
  - spec/rails_app/config/initializers/devise.rb
129
130
  - spec/rails_app/config/mongoid.yml
131
+ - spec/rails_app/config/routes.rb
130
132
  - spec/rails_app/db/migrate/20230617201921_devise_create_users.rb
131
133
  - spec/rails_app/db/migrate/20231004084147_devise_create_old_users.rb
132
134
  - spec/rails_app/db/schema.rb