panda_pal 2.0.2 → 2.0.3

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
  SHA1:
3
- metadata.gz: dec363ec0b5ca735237ea01b194dda78320eadf5
4
- data.tar.gz: 397cf50a70cac0e961a96f01f95ee2eea8666f9d
3
+ metadata.gz: 894962973c1c791c1cc756014123e94abb43e471
4
+ data.tar.gz: a6ce46be2f4676c03d38c23e65579376a0094750
5
5
  SHA512:
6
- metadata.gz: 8f3a1e05a1ac97b39816a77f7c29c587ff252b148a683ae1139821c883ecbf7368a9abdf6b21280292c85732df785d132e3e5c474798346be18ab9feff85e1ff
7
- data.tar.gz: 82789e5edf44b8dd4a1ec30e1f70b70b662f5ed8657265490900d8c3fdcd3c40fa6258805c38057454833ee4efae01b27b0b33a3cdcb8c7a6408ad394000f9e3
6
+ metadata.gz: 12542132e7b4ad67657805aded0c7ae44933af03baf23d7b9318156e08985e3ee8823e4e5739ab127914adfd603cc03f58e73698ebcad6baa52a4476fb5afb5a
7
+ data.tar.gz: 82030c6a2c4c1b82871ac2dd74334462528d6215742ed84e17aa67f5fd0a71ae881ae4f49c1f1e4b5682892aa9cfecee2f7ed3ee3b4410406164f22ef49e3221
@@ -0,0 +1,4 @@
1
+ <script>
2
+ var referrer = document.referrer;
3
+ top.window.location='?safari_cookie_fix=true&return_to='.concat(encodeURI(referrer));
4
+ </script>
@@ -1,3 +1,5 @@
1
+ require 'browser'
2
+
1
3
  module PandaPal::Helpers::ControllerHelper
2
4
  def save_session
3
5
  current_session.try(:save)
@@ -41,8 +43,29 @@ module PandaPal::Helpers::ControllerHelper
41
43
  end
42
44
  end
43
45
 
46
+ # Browsers that prevent 3rd party cookies by default (Safari and IE) run into problems
47
+ # with CSRF handling because the Rails session cookie isn't set. To fix this, we
48
+ # redirect the current page to the LTI using JavaScript, which will set the cookie,
49
+ # and then immediately redirect back to Canvas.
50
+ def fix_iframe_cookies
51
+ if params[:safari_cookie_fix].present?
52
+ session[:safari_cookie_fixed] = true
53
+ redirect_to params[:return_to]
54
+ else
55
+ render 'panda_pal/lti/iframe_cookie_fix', layout: false
56
+ end
57
+ end
58
+
59
+ def cookies_need_iframe_fix?
60
+ (browser.safari? || browser.ie?) && !request.referrer.include?('sessionless_launch') && !session[:safari_cookie_fixed]
61
+ end
62
+
44
63
  def forbid_access_if_lacking_session
45
- render plain: 'You should do an LTI Tool Launch.', status: :unauthorized unless valid_session?
64
+ if cookies_need_iframe_fix?
65
+ fix_iframe_cookies
66
+ else
67
+ render plain: 'You should do an LTI Tool Launch.', status: :unauthorized unless valid_session?
68
+ end
46
69
  end
47
70
 
48
71
  def valid_session?
@@ -1,3 +1,3 @@
1
1
  module PandaPal
2
- VERSION = "2.0.2"
2
+ VERSION = "2.0.3"
3
3
  end
data/panda_pal.gemspec CHANGED
@@ -19,6 +19,7 @@ Gem::Specification.new do |s|
19
19
  s.add_dependency "pg", '~> 0.20'
20
20
  s.add_dependency 'apartment', '~> 1.2.0'
21
21
  s.add_dependency 'ims-lti', '~> 2.1.0'
22
+ s.add_dependency 'browser', '2.5.0'
22
23
 
23
24
  s.add_development_dependency 'rspec-rails'
24
25
  s.add_development_dependency 'factory_girl_rails'
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: 2.0.2
4
+ version: 2.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Young
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-06-14 00:00:00.000000000 Z
12
+ date: 2017-08-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -67,6 +67,20 @@ dependencies:
67
67
  - - "~>"
68
68
  - !ruby/object:Gem::Version
69
69
  version: 2.1.0
70
+ - !ruby/object:Gem::Dependency
71
+ name: browser
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - '='
75
+ - !ruby/object:Gem::Version
76
+ version: 2.5.0
77
+ type: :runtime
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - '='
82
+ - !ruby/object:Gem::Version
83
+ version: 2.5.0
70
84
  - !ruby/object:Gem::Dependency
71
85
  name: rspec-rails
72
86
  requirement: !ruby/object:Gem::Requirement
@@ -129,6 +143,7 @@ files:
129
143
  - app/models/panda_pal/organization.rb
130
144
  - app/models/panda_pal/session.rb
131
145
  - app/views/layouts/panda_pal/application.html.erb
146
+ - app/views/panda_pal/lti/iframe_cookie_fix.html.erb
132
147
  - app/views/panda_pal/lti/launch.html.erb
133
148
  - config/initializers/apartment.rb
134
149
  - config/routes.rb
@@ -209,7 +224,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
209
224
  version: '0'
210
225
  requirements: []
211
226
  rubyforge_project:
212
- rubygems_version: 2.2.2
227
+ rubygems_version: 2.5.2
213
228
  signing_key:
214
229
  specification_version: 4
215
230
  summary: LTI mountable engine
@@ -258,4 +273,3 @@ test_files:
258
273
  - spec/models/panda_pal/session_spec.rb
259
274
  - spec/rails_helper.rb
260
275
  - spec/spec_helper.rb
261
- has_rdoc: