File tree Expand file tree Collapse file tree 2 files changed +32
-2
lines changed Expand file tree Collapse file tree 2 files changed +32
-2
lines changed Original file line number Diff line number Diff line change @@ -20,7 +20,21 @@ def verify(model)
20
20
private
21
21
22
22
def verifier
23
- @verifier ||= ActiveSupport ::MessageVerifier . new ( Rails . application . config . secret_key_base )
23
+ @verifier ||= begin
24
+ # This is a Rails 7.1 MessageVerifier, which is Rails 7.0-compatible verifier - as a fallback.
25
+ #
26
+ # Read more:
27
+ # https://api.rubyonrails.org/v7.0/classes/ActiveSupport/MessageVerifier.html
28
+ # https://api.rubyonrails.org/v7.1/classes/ActiveSupport/MessageVerifier.html
29
+ # https://api.rubyonrails.org/v8.0.2.1/classes/ActiveSupport/MessageVerifier.html
30
+
31
+ verifier = ActiveSupport ::MessageVerifier . new ( Rails . application . config . secret_key_base )
32
+ # Rails 7.0 default: Marshal. Rails 7.1 (the default) is :json_allow_marshal.
33
+ verifier . rotate ( serializer : Marshal )
34
+ # Rails 7.0 default: "SHA1". Rails 7.1 (the default) is "SHA256".
35
+ verifier . rotate ( digest : 'SHA1' )
36
+ verifier
37
+ end
24
38
end
25
39
26
40
def generate_access_token
Original file line number Diff line number Diff line change 6
6
end
7
7
8
8
it 'generates access_token for an id' do
9
- expect ( Verifier . new ( id : 1 ) . access_token ) . to be_eql ( 'BAhpBg ==--30d45b871c77098a0ba79cf27dd532650ca75531 ')
9
+ expect ( Verifier . new ( id : 1 ) . access_token ) . to eq ( 'MQ ==--a3487195ba15b69d4aa07b7da0234463b82c96b3 ')
10
10
end
11
11
12
12
it 'verifies a model' do
15
15
16
16
expect ( Verifier . new ( token : access_token ) . verify ( Member ) ) . to eq ( member )
17
17
end
18
+
19
+ context 'with an access token from Rails 7.0' do
20
+ it 'verifies a model' do
21
+ member = Fabricate ( :member )
22
+ access_token = build_access_token_from_rails70 ( member . id )
23
+
24
+ expect ( Verifier . new ( token : access_token ) . verify ( Member ) ) . to eq ( member )
25
+ end
26
+
27
+ def build_access_token_from_rails70 ( id )
28
+ # Old Rails 7.0 default was Marshal. Rails 7.1 (the default) is :json_allow_marshal.
29
+ # Old Rails 7.0 default was "SHA1". Rails 7.1 (the default) is "SHA256".
30
+ verifier = ActiveSupport ::MessageVerifier . new ( Rails . application . config . secret_key_base , serializer : Marshal , digest : 'SHA1' )
31
+ verifier . generate ( id )
32
+ end
33
+ end
18
34
end
You can’t perform that action at this time.
0 commit comments