panda_pal 5.16.11 → 5.16.13

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: ee9158110a7d849ea8c7081ca5dad936f4249ae4900b27e7f22462b9712a8d93
4
- data.tar.gz: ce723eedd0ced7e2c2bde8efa673e5dbae9233dabad7055a4899182e3babdc12
3
+ metadata.gz: eee3a364aa3be3e70d5ecadb4ea70c307c756eb196758bf44043b4dafb852a3c
4
+ data.tar.gz: ca42410eb19a2a8d5d253a32b3482e2273c5840632e6a00e577fa215e5ce2dad
5
5
  SHA512:
6
- metadata.gz: 738958fdcaa04fb5facefb8f01fef401755c90d828d008ef2fb805eda475c70d5dfb078fc6e9736108f6120c6bb11917bf548f2c36f6184dc25d2bba6513ec01
7
- data.tar.gz: f5c7b45e8c9757f7184f8e4411890c0afb5821b9a1f691236c0c885ae8dd80e371b5bb51b0adcb0360e5e23a2a88f7b606b0aa9c461115b09e838a255c737073
6
+ metadata.gz: dcefe8a6496762e334f3e08367a5b6b5d2eeb92c2142a39ec3f4f1cd6c6e375cd1812a8900443ffd2f7b50ea5571dfb0583b44f706cf5523246babf700bd7df0
7
+ data.tar.gz: d8615a3bb2dede06f53e1ab1a2d5f1fe648495c3415acaa6f9dcdf6dd44b6cd188f3ae2bcfe3fd623963534819d130fdd090fc35e0fe75be8abf36acb86be16e
@@ -124,9 +124,7 @@ module PandaPal
124
124
  end
125
125
 
126
126
  def public_jwks
127
- render json: {
128
- keys: [JWT::JWK.new(PandaPal.lti_private_key).export]
129
- }
127
+ render json: JWT::JWK::Set.new(PandaPal.jwk).export
130
128
  end
131
129
 
132
130
  protected
@@ -134,9 +134,8 @@ module PandaPal
134
134
  PandaPal::LtiConstants::DeepLinking::DATA => custom_deep_link_data,
135
135
  }
136
136
 
137
- require 'json/jwt'
138
- jwk = JSON::JWK.new(PandaPal.lti_private_key)
139
- JSON::JWT.new(deep_link_jwt_payload).sign(jwk, :RS256).to_s
137
+ jwk = PandaPal.jwk
138
+ JWT.encode(deep_link_jwt_payload, jwk.signing_key, jwk[:alg], kid: jwk[:kid])
140
139
  end
141
140
  end
142
141
  end
@@ -168,13 +168,22 @@ module PandaPal
168
168
  lti_json["target_link_uri"]
169
169
  ]
170
170
 
171
+ canvas_ext = (lti_json["extensions"] || []).find { |ext| ext["platform"] == "canvas.instructure.com" }
172
+ placements = canvas_ext&.dig("settings", "placements") || []
173
+ placements.each do |p|
174
+ next unless p["target_link_uri"]
175
+ valid_redirect_uris << p["target_link_uri"].gsub(/\?.*$/, "")
176
+ end
177
+
178
+ valid_redirect_uris.uniq!
179
+
171
180
  prod_domain = PandaPal.lti_environments[:domain]
172
181
  if prod_domain.present?
173
182
  PandaPal.lti_environments.each do |env, domain|
174
183
  env = env.to_s
175
184
  next unless env.ends_with?("_domain")
176
185
  env = env.split('_')[0]
177
- valid_redirect_uris << lti_json["target_link_uri"].gsub(prod_domain, domain)
186
+ valid_redirect_uris += valid_redirect_uris.map{|uri| uri.gsub(prod_domain, domain)}
178
187
  end
179
188
  end
180
189
 
@@ -17,6 +17,6 @@ module PandaPal::Helpers::RouteHelper
17
17
  lti_options[:route_helper_key] = path.split('/').reject(&:empty?).join('_')
18
18
  post(path, options.dup, &block)
19
19
  get(path, options.dup, &block)
20
- PandaPal::stage_placement(nav, lti_options)
20
+ PandaPal::stage_navigation(nav, lti_options)
21
21
  end
22
22
  end
@@ -1,3 +1,3 @@
1
1
  module PandaPal
2
- VERSION = '5.16.11'
2
+ VERSION = '5.16.13'
3
3
  end
data/lib/panda_pal.rb CHANGED
@@ -5,6 +5,8 @@ require 'panda_pal/lti_constants'
5
5
  require 'oauth/request_proxy/rack_request'
6
6
  require 'oauth/request_proxy/action_dispatch_request'
7
7
 
8
+ require 'jwt'
9
+
8
10
  Dir[File.dirname(__FILE__) + "/panda_pal/concerns/**/*.rb"].each { |file| require file }
9
11
 
10
12
  module PandaPal
@@ -111,6 +113,14 @@ module PandaPal
111
113
  end.compact
112
114
  end
113
115
 
116
+ def self.jwk
117
+ @@jwk ||= JWT::JWK.new(lti_private_key, { use: 'sig', alg: 'RS256' })
118
+ end
119
+
120
+ def self.jwk=(v)
121
+ @@jwk = v
122
+ end
123
+
114
124
  private
115
125
 
116
126
  def self.normalize_ext_type(type)
data/panda_pal.gemspec CHANGED
@@ -26,7 +26,6 @@ Gem::Specification.new do |s|
26
26
  s.add_dependency 'browser', '2.5.0'
27
27
  s.add_dependency 'attr_encrypted', '~> 4.0.0'
28
28
  s.add_dependency 'secure_headers', '~> 6.1'
29
- s.add_dependency 'json-jwt'
30
29
  s.add_dependency 'jwt'
31
30
  s.add_dependency 'httparty'
32
31
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: panda_pal
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.16.11
4
+ version: 5.16.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Instructure CustomDev
@@ -93,20 +93,6 @@ dependencies:
93
93
  - - "~>"
94
94
  - !ruby/object:Gem::Version
95
95
  version: '6.1'
96
- - !ruby/object:Gem::Dependency
97
- name: json-jwt
98
- requirement: !ruby/object:Gem::Requirement
99
- requirements:
100
- - - ">="
101
- - !ruby/object:Gem::Version
102
- version: '0'
103
- type: :runtime
104
- prerelease: false
105
- version_requirements: !ruby/object:Gem::Requirement
106
- requirements:
107
- - - ">="
108
- - !ruby/object:Gem::Version
109
- version: '0'
110
96
  - !ruby/object:Gem::Dependency
111
97
  name: jwt
112
98
  requirement: !ruby/object:Gem::Requirement