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 +4 -4
- data/app/controllers/panda_pal/lti_v1_p3_controller.rb +1 -3
- data/app/lib/panda_pal/deep_linking_helpers.rb +2 -3
- data/app/models/panda_pal/platform/canvas.rb +10 -1
- data/lib/panda_pal/helpers/route_helper.rb +1 -1
- data/lib/panda_pal/version.rb +1 -1
- data/lib/panda_pal.rb +10 -0
- data/panda_pal.gemspec +0 -1
- metadata +1 -15
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: eee3a364aa3be3e70d5ecadb4ea70c307c756eb196758bf44043b4dafb852a3c
|
|
4
|
+
data.tar.gz: ca42410eb19a2a8d5d253a32b3482e2273c5840632e6a00e577fa215e5ce2dad
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: dcefe8a6496762e334f3e08367a5b6b5d2eeb92c2142a39ec3f4f1cd6c6e375cd1812a8900443ffd2f7b50ea5571dfb0583b44f706cf5523246babf700bd7df0
|
|
7
|
+
data.tar.gz: d8615a3bb2dede06f53e1ab1a2d5f1fe648495c3415acaa6f9dcdf6dd44b6cd188f3ae2bcfe3fd623963534819d130fdd090fc35e0fe75be8abf36acb86be16e
|
|
@@ -134,9 +134,8 @@ module PandaPal
|
|
|
134
134
|
PandaPal::LtiConstants::DeepLinking::DATA => custom_deep_link_data,
|
|
135
135
|
}
|
|
136
136
|
|
|
137
|
-
|
|
138
|
-
jwk
|
|
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
|
|
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::
|
|
20
|
+
PandaPal::stage_navigation(nav, lti_options)
|
|
21
21
|
end
|
|
22
22
|
end
|
data/lib/panda_pal/version.rb
CHANGED
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
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.
|
|
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
|