qalam_lti_provider_engine 2.0.7 → 2.0.8

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
  SHA256:
3
- metadata.gz: c44302d262a552ee530b6f28ee83e7477d2246ed17ef96ab947dd05f9ab8feab
4
- data.tar.gz: 44f56ac3fd92498e8d879d144c9cb46b427cf4f34da6b3af45a9d638669cd00d
3
+ metadata.gz: 58133aa1d62a24703c017cde3034ec79c66fdcfd933b199fd50b5b48eab54911
4
+ data.tar.gz: 99b8895d05651991ed895948c7a722be8e3825320114f7ca0f7741a1a7826e6a
5
5
  SHA512:
6
- metadata.gz: d11a370ea40641bedfe3b509266b60f8147179e0ef82105d80b44eab4d6f6af877e20e928052614f0b65bafae8a909bd51ed371f08238991eff89859982a32f3
7
- data.tar.gz: 5d10c95c500fb6198b99415a82163311272e19ced22b9e63db612d0f9b80fa34bf65eb6363cff0326cecdd35573199683f3a5e04f05c4283a2579d9da7ab7250
6
+ metadata.gz: '070911c42da9f77387c0f70ecb192390dab703191a3becf5631410e8535b42c8e98c63d84b80a635d715ff1a5bca1bbb0e378337d351a41a4e33b17bbea77abf'
7
+ data.tar.gz: 32257903add2518d9ba4f9f1e2a245a0764f3c75e5fb6066c2b09861b5721b1ae43a650a4f87f4fe7bbbbfc6c5bebbb11f0a3fdd1321f0d1b28e87b957087936
@@ -4,21 +4,28 @@ require 'colorize'
4
4
  module LtiProvider
5
5
  class LtiController < LtiProvider::LtiApplicationController
6
6
  skip_before_action :require_lti_launch
7
- # skip_before_action :verify_authenticity_token, only: :launch
7
+ skip_before_action :verify_authenticity_token, only: :launch
8
8
 
9
9
  def launch
10
- provider = IMS::LTI::ToolProvider.new(params['oauth_consumer_key'], LtiProvider::Config.secret, params)
10
+ tool_key = params['oauth_consumer_key']
11
+ tool_secret = ((ToolLtiKey.table_exists? && ToolLtiKey.find_by(key: tool_key, canvas_url: canvas_url_domain)&.secret) or (LtiProvider::Config.secret))
12
+
13
+ # puts tool_key.inspect.green
14
+ # puts LtiProvider::Config.secret.inspect.red
15
+ # puts (ToolLtiKey.table_exists? && ToolLtiKey.find_by(key: tool_key, canvas_url: canvas_url_domain)&.secret).inspect.red
16
+ # puts tool_secret.inspect.green
17
+
18
+ provider = IMS::LTI::ToolProvider.new(tool_key, tool_secret, params)
11
19
  launch = Launch.initialize_from_request(provider, request)
12
20
 
13
- puts launch.inspect.red
14
- puts request.origin.inspect.green
15
- puts request.base_url.inspect.yellow
21
+ # puts launch.inspect.red
22
+ # puts request.origin.inspect.green
23
+ # puts request.base_url.inspect.yellow
16
24
  if !launch.valid_provider?
17
25
  msg = "#{launch.lti_errormsg} Please be sure you are launching this tool from the link provided in Qalam."
18
26
  return show_error msg
19
27
  elsif launch.save
20
28
  session[:cookie_test] = true
21
-
22
29
  ### QALAM ###
23
30
  if params[:timetable_date] && params[:section_room]
24
31
  redirect_to cookie_test_path(nonce: launch.nonce, timetable_date: params[:timetable_date], section_room: params[:section_room])
@@ -27,11 +34,11 @@ module LtiProvider
27
34
  end
28
35
  ### END ###
29
36
  else
30
- if params[:launch_tool] && params[:launch_tool] == 'digital_library'
31
- redirect_to main_app.root_path and return
32
- else
37
+ # if params[:launch_tool] && params[:launch_tool] == 'digital_library'
38
+ # redirect_to main_app.root_path and return
39
+ # else
33
40
  return show_error "Unable to launch #{LtiProvider::XmlConfig.tool_title}. Please check your External Tools configuration and try again."
34
- end
41
+ # end
35
42
  end
36
43
  end
37
44
 
@@ -42,11 +49,11 @@ module LtiProvider
42
49
  # success!!! we've got a session!
43
50
  consume_launch
44
51
  else
45
- if @launch.launch_tool && @launch.launch_tool == 'digital_library'
46
- redirect_to main_app.root_path and return
47
- else
52
+ # if @launch.launch_tool && @launch.launch_tool == 'digital_library'
53
+ # redirect_to main_app.root_path and return
54
+ # else
48
55
  render and return
49
- end
56
+ # end
50
57
  end
51
58
  end
52
59
 
@@ -66,17 +73,17 @@ module LtiProvider
66
73
 
67
74
  @launch.destroy
68
75
 
69
- if @launch.launch_tool && @launch.launch_tool == 'digital_library'
70
- redirect_to main_app.root_path and return
71
- else
76
+ # if @launch.launch_tool && @launch.launch_tool == 'digital_library'
77
+ # redirect_to main_app.root_path and return
78
+ # else
72
79
  redirect_to main_app.root_path and return
73
- end
80
+ # end
74
81
  else
75
- if @launch.launch_tool && @launch.launch_tool == 'digital_library'
76
- redirect_to main_app.root_path and return
77
- else
82
+ # if @launch.launch_tool && @launch.launch_tool == 'digital_library'
83
+ # redirect_to main_app.root_path and return
84
+ # else
78
85
  return show_error "The tool was not launched successfully. Please try again."
79
- end
86
+ # end
80
87
  end
81
88
  end
82
89
 
@@ -92,5 +99,15 @@ module LtiProvider
92
99
  def show_error(message)
93
100
  render plain: message
94
101
  end
102
+
103
+ private
104
+ def canvas_url_domain
105
+ if params['launch_presentation_return_url']
106
+ uri = URI.parse(params['launch_presentation_return_url'])
107
+ domain = "#{uri.scheme}://#{uri.host}"
108
+ domain += ":#{uri.port}" unless uri.port.nil? || [80, 443].include?(uri.port.to_i)
109
+ return domain
110
+ end
111
+ end
95
112
  end
96
113
  end
@@ -0,0 +1,4 @@
1
+ class ToolLtiKey < ApplicationRecord
2
+ validates :canvas_url, :secret, presence: true
3
+ validates :key, presence: true, :uniqueness => {:scope=>:canvas_url}
4
+ end
@@ -1,12 +1,14 @@
1
1
  <!DOCTYPE html>
2
2
  <html>
3
- <head>
4
- <title>LtiProvider</title>
5
- <%= csrf_meta_tags %>
6
- </head>
7
- <body>
8
-
9
- <%= yield %>
10
-
11
- </body>
12
- </html>
3
+ <head>
4
+ <title>QalamLtiProvider</title>
5
+ <%= csrf_meta_tags %>
6
+ <meta name="description" content="About QalamLtiProvider">
7
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
8
+ <%= csrf_meta_tags %>
9
+ <%= csp_meta_tag %>
10
+ </head>
11
+ <body>
12
+ <%= yield %>
13
+ </body>
14
+ </html>
@@ -0,0 +1,11 @@
1
+ class CreateToolLtiKeys < ActiveRecord::Migration[6.0]
2
+ def change
3
+ create_table :tool_lti_keys do |t|
4
+ t.string :key
5
+ t.string :secret
6
+ t.string :canvas_url
7
+
8
+ t.timestamps
9
+ end
10
+ end
11
+ end
@@ -59,19 +59,19 @@ module LtiProvider
59
59
  end
60
60
 
61
61
  def student_launch?
62
- user_roles.split(',').include? 'urn:lti:role:ims/lis/Learner'
62
+ user_roles&.split(',')&.include? 'urn:lti:role:ims/lis/Learner'
63
63
  end
64
64
 
65
65
  def teacher_launch?
66
- user_roles.split(',').include? 'urn:lti:role:ims/lis/Instructor'
66
+ user_roles&.split(',')&.include? 'urn:lti:role:ims/lis/Instructor'
67
67
  end
68
68
 
69
69
  def account_admin_launch?
70
- user_roles.split(',').include? 'urn:lti:instrole:ims/lis/Administrator'
70
+ user_roles&.split(',')&.include? 'urn:lti:instrole:ims/lis/Administrator'
71
71
  end
72
72
 
73
73
  def root_admin_launch?
74
- user_roles.split(',').include? 'urn:lti:sysrole:ims/lis/SysAdmin'
74
+ user_roles&.split(',')&.include? 'urn:lti:sysrole:ims/lis/SysAdmin'
75
75
  end
76
76
  ### END ###
77
77
 
@@ -79,4 +79,4 @@ module LtiProvider
79
79
  render plain: "Unable to process request", status: 406
80
80
  end
81
81
  end
82
- end
82
+ end
@@ -1,3 +1,3 @@
1
1
  module LtiProvider
2
- VERSION = "2.0.7"
2
+ VERSION = "2.0.8"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: qalam_lti_provider_engine
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.7
4
+ version: 2.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dave Donahue
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2021-08-08 00:00:00.000000000 Z
14
+ date: 2021-08-09 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: rails
@@ -245,12 +245,14 @@ files:
245
245
  - app/controllers/lti_provider/lti_application_controller.rb
246
246
  - app/controllers/lti_provider/lti_controller.rb
247
247
  - app/models/lti_provider/launch.rb
248
+ - app/models/tool_lti_key.rb
248
249
  - app/views/layouts/lti_provider/application.html.erb
249
250
  - app/views/lti_provider/lti/cookie_test.html.erb
250
251
  - config/lti.yml.example
251
252
  - config/lti_xml.yml.example
252
253
  - config/routes.rb
253
254
  - db/migrate/20130319050003_create_lti_provider_launches.rb
255
+ - db/migrate/20210809101126_create_tool_lti_keys.rb
254
256
  - lib/lti_provider.rb
255
257
  - lib/lti_provider/config.rb
256
258
  - lib/lti_provider/engine.rb