coalescing_panda 5.1.0 → 5.1.4

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: ca4769293181b5ee47471cc9051ad0b678915f71
4
- data.tar.gz: 60c8585ff7f5d28057b703a9ae7c5a85ab6dbdb7
3
+ metadata.gz: bcdc3ee528ad33450c36b9bacd2935ddc508b021
4
+ data.tar.gz: faa4fe4cdba14da7d260ceff84fe45fbd26dbdd2
5
5
  SHA512:
6
- metadata.gz: 6103b51481915a9d2719a87ff81c042a783d0111108e4c270fc3261a61008ab3683beaae3b2a9490450248fe882f4be75776d360219fe2dadb7377cc301f229f
7
- data.tar.gz: f434c3a048769d55b72fe0ba190c7033ce0429b0acbf3ec0ec1a2ea2bc920262de49ef9336feb5e236d1767237bd79dd4ccf6bf14765c79358faa24fa329e91c
6
+ metadata.gz: 7a0a02279da82108e5c7ed472932e6e59948b0d64845c35ef7bfa02dd85b0efc33288c24aa02cf3b952f9915c2f9801c1fef833e9a9e72fe62739e19b72b6756
7
+ data.tar.gz: d48d2df6835e58324d4b750cb34c46000a3739faba5e465845ee935b354e183d2a0e0c2922cde1f705dc9b481e6c9fbbb7954e87db10f5994852b834d266f872
@@ -158,9 +158,8 @@ module CoalescingPanda
158
158
  end
159
159
 
160
160
  def valid_session?
161
- [
162
- current_session&.persisted?,
163
- ].all?
161
+ return false unless current_session(create_missing: false)&.persisted?
162
+ true
164
163
  rescue SessionNonceMismatch
165
164
  false
166
165
  end
@@ -4,9 +4,9 @@ module CoalescingPanda
4
4
 
5
5
  def self.to_boolean(v)
6
6
  if Rails.version < '5.0'
7
- ActiveRecord::Type::Boolean.new.type_cast_from_user("0")
7
+ ActiveRecord::Type::Boolean.new.type_cast_from_user(v)
8
8
  else
9
- ActiveRecord::Type::Boolean.new.deserialize('0')
9
+ ActiveRecord::Type::Boolean.new.deserialize(v)
10
10
  end
11
11
  end
12
12
  end
@@ -20,19 +20,22 @@ module CoalescingPanda
20
20
  @link_nonce_type = value
21
21
  end
22
22
  end
23
+
24
+ def session_expiration_period_minutes
25
+ superclass.try(:session_expiration_period_minutes) || 15
26
+ end
23
27
  end
24
28
 
25
29
  def save_session
26
30
  current_session.try(:save)
27
31
  end
28
32
 
29
- def current_session
33
+ def current_session(create_missing: true)
30
34
  return @current_session if @current_session.present?
31
35
 
32
36
  if params[:session_token]
33
37
  payload = JSON.parse(session_cryptor.decrypt_and_verify(params[:session_token])).with_indifferent_access
34
38
  matched_session = find_or_create_session(key: payload[:session_key])
35
-
36
39
  if matched_session.present?
37
40
  if payload[:token_type] == 'nonce' && matched_session.data[:link_nonce] == payload[:nonce]
38
41
  @current_session = matched_session
@@ -40,6 +43,8 @@ module CoalescingPanda
40
43
  elsif payload[:token_type] == 'fixed_ip' && matched_session.data[:remote_ip] == request.remote_ip &&
41
44
  DateTime.parse(matched_session.data[:last_ip_token_requested]) > 15.minutes.ago
42
45
  @current_session = matched_session
46
+ elsif payload[:token_type] == 'expiring' && DateTime.parse(matched_session.data[:last_token_requested]) > session_expiration_period_minutes.minutes.ago
47
+ @current_session = matched_session
43
48
  end
44
49
  end
45
50
  raise SessionNonceMismatch, "Session Not Found" unless @current_session.present?
@@ -47,7 +52,7 @@ module CoalescingPanda
47
52
  @current_session = find_or_create_session(key: session_key)
48
53
  end
49
54
 
50
- @current_session ||= find_or_create_session(key: :create)
55
+ @current_session ||= find_or_create_session(key: :create) if create_missing
51
56
 
52
57
  @current_session
53
58
  end
@@ -111,6 +116,8 @@ module CoalescingPanda
111
116
  elsif type == 'fixed_ip'
112
117
  current_session_data[:remote_ip] ||= request.remote_ip
113
118
  current_session_data[:last_ip_token_requested] = DateTime.now.iso8601
119
+ elsif type == 'expiring'
120
+ current_session_data[:last_token_requested] = DateTime.now.iso8601
114
121
  else
115
122
  raise StandardError, "Unsupported link_nonce_type: '#{type}'"
116
123
  end
@@ -123,6 +130,10 @@ module CoalescingPanda
123
130
  self.class.link_nonce_type
124
131
  end
125
132
 
133
+ def session_expiration_period_minutes
134
+ self.session_expiration_period_minutes
135
+ end
136
+
126
137
  private
127
138
 
128
139
  def session_cryptor
@@ -1,3 +1,3 @@
1
1
  module CoalescingPanda
2
- VERSION = '5.1.0'
2
+ VERSION = '5.1.4'
3
3
  end
metadata CHANGED
@@ -1,16 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: coalescing_panda
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.1.0
4
+ version: 5.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nathan Mills
8
8
  - Cody Tanner
9
9
  - Jake Sorce
10
- autorequire:
10
+ autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2020-09-14 00:00:00.000000000 Z
13
+ date: 2020-10-02 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rails
@@ -396,7 +396,7 @@ dependencies:
396
396
  - - ">="
397
397
  - !ruby/object:Gem::Version
398
398
  version: '0'
399
- description:
399
+ description:
400
400
  email:
401
401
  - nathanm@instructure.com
402
402
  - ctanner@instructure.com
@@ -563,7 +563,7 @@ files:
563
563
  homepage: http://www.instructure.com
564
564
  licenses: []
565
565
  metadata: {}
566
- post_install_message:
566
+ post_install_message:
567
567
  rdoc_options: []
568
568
  require_paths:
569
569
  - lib
@@ -578,9 +578,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
578
578
  - !ruby/object:Gem::Version
579
579
  version: '0'
580
580
  requirements: []
581
- rubyforge_project:
581
+ rubyforge_project:
582
582
  rubygems_version: 2.6.14.4
583
- signing_key:
583
+ signing_key:
584
584
  specification_version: 4
585
585
  summary: Canvas LTI and OAUTH2 mountable engine
586
586
  test_files: