coalescing_panda 5.0.1 → 5.0.7

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.
Files changed (43) hide show
  1. checksums.yaml +5 -5
  2. data/app/assets/config/coalescing_panda/manifest.js +3 -0
  3. data/app/controllers/coalescing_panda/canvas_batches_controller.rb +2 -2
  4. data/app/controllers/coalescing_panda/lti_controller.rb +1 -1
  5. data/app/helpers/coalescing_panda/canvas_batches_helper.rb +1 -1
  6. data/app/models/coalescing_panda/json_with_indifferent_access.rb +13 -0
  7. data/app/models/coalescing_panda/persistent_session.rb +2 -1
  8. data/db/migrate/20131114150001_create_coalescing_panda_canvas_api_auths.rb +1 -1
  9. data/db/migrate/20131118211442_create_coalescing_panda_lti_accounts.rb +1 -1
  10. data/db/migrate/20131119165343_create_coalescing_panda_lti_nonces.rb +1 -1
  11. data/db/migrate/20140904223159_create_coalescing_panda_sessions.rb +1 -1
  12. data/db/migrate/20141119225319_create_coalescing_panda_terms.rb +1 -1
  13. data/db/migrate/20141119225721_create_coalescing_panda_courses.rb +1 -1
  14. data/db/migrate/20141120151432_create_coalescing_panda_sections.rb +1 -1
  15. data/db/migrate/20141120151940_create_coalescing_panda_assignments.rb +1 -1
  16. data/db/migrate/20141120152458_create_coalescing_panda_users.rb +1 -1
  17. data/db/migrate/20141120152546_create_coalescing_panda_submissions.rb +1 -1
  18. data/db/migrate/20141120153135_create_coalescing_panda_enrollments.rb +1 -1
  19. data/db/migrate/20141121174846_create_coalescing_panda_canvas_batches.rb +1 -1
  20. data/db/migrate/20141124160857_create_delayed_jobs.rb +1 -1
  21. data/db/migrate/20141208221740_add_submission_types_to_assignments.rb +1 -1
  22. data/db/migrate/20150106175418_add_group_category_id_to_assignment.rb +1 -1
  23. data/db/migrate/20150106180131_add_published_to_assignments.rb +1 -1
  24. data/db/migrate/20150107205405_create_coalescing_panda_groups.rb +1 -1
  25. data/db/migrate/20150107205413_create_coalescing_panda_group_memberships.rb +1 -1
  26. data/db/migrate/20150210180516_add_context_to_canvas_batch.rb +1 -1
  27. data/db/migrate/20150506183335_create_coalescing_panda_assignment_groups.rb +1 -1
  28. data/db/migrate/20150506192717_add_assignment_group_id_to_assignments.rb +1 -1
  29. data/db/migrate/20150526144713_add_account_to_canvas_batches.rb +1 -1
  30. data/db/migrate/20150602205257_add_option_to_canvas_batches.rb +1 -1
  31. data/db/migrate/20150708192717_add_group_moderator_to_group_memberships.rb +1 -1
  32. data/db/migrate/20150709192717_add_leader_id_to_groups.rb +1 -1
  33. data/db/migrate/20150714205405_create_coalescing_panda_group_categories.rb +1 -1
  34. data/db/migrate/20150811140030_add_fields_to_users.rb +1 -1
  35. data/db/migrate/20151209155923_add_refresh_settings_to_canvas_api_auth.rb +1 -1
  36. data/db/migrate/20160830183155_create_coalescing_panda_oauth_states.rb +1 -1
  37. data/db/migrate/20200528224505_create_coalescing_panda_persistent_session.rb +1 -1
  38. data/lib/coalescing_panda/controller_helpers.rb +40 -23
  39. data/lib/coalescing_panda/engine.rb +12 -42
  40. data/lib/coalescing_panda/misc_helper.rb +13 -0
  41. data/lib/coalescing_panda/secure_headers.rb +84 -0
  42. data/lib/coalescing_panda/version.rb +1 -1
  43. metadata +172 -163
@@ -0,0 +1,13 @@
1
+ module CoalescingPanda
2
+ module MiscHelper
3
+ MigrationClass = Rails.version < '5.0' ? ActiveRecord::Migration : ActiveRecord::Migration[4.2]
4
+
5
+ def self.to_boolean(v)
6
+ if Rails.version < '5.0'
7
+ ActiveRecord::Type::Boolean.new.type_cast_from_user("0")
8
+ else
9
+ ActiveRecord::Type::Boolean.new.deserialize('0')
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,84 @@
1
+ module CoalescingPanda
2
+ module SecureHeaders
3
+ def self.apply_defaults(config)
4
+ @config = config
5
+ # The default cookie headers aren't compatable with CoalescingPanda cookies currenntly
6
+ config.cookies = { samesite: { none: true } }
7
+
8
+ if Rails.env.production?
9
+ config.cookies[:secure] = true
10
+ end
11
+
12
+ # Need to allow LTI iframes
13
+ config.x_frame_options = "ALLOWALL"
14
+
15
+ config.x_content_type_options = "nosniff"
16
+ config.x_xss_protection = "1; mode=block"
17
+ config.referrer_policy = %w(origin-when-cross-origin strict-origin-when-cross-origin)
18
+
19
+ config.csp ||= {}
20
+
21
+ csp_entry(:default_src, %w['self'])
22
+ csp_entry(:connect_src, %w['self'])
23
+ csp_entry(:script_src, %w['self'])
24
+
25
+ if Rails.env.development?
26
+ # Allow webpack-dev-server to work
27
+ csp_entry(:connect_src, "http://localhost:3035")
28
+ csp_entry(:connect_src, "ws://localhost:3035")
29
+
30
+ # Allow stuff like rack-mini-profiler to work in development:
31
+ # https://github.com/MiniProfiler/rack-mini-profiler/issues/327
32
+ # DON'T ENABLE THIS FOR PRODUCTION!
33
+ csp_entry(:script_src, "'unsafe-eval'")
34
+
35
+ # Detect and permit Scout APM in Dev
36
+ if MiscHelper.to_boolean(ENV['SCOUT_DEV_TRACE'])
37
+ csp_entry(:default_src, 'https://scoutapm.com')
38
+ csp_entry(:default_src, 'https://apm.scoutapp.com')
39
+
40
+ csp_entry(:script_src, "'unsafe-inline'")
41
+ csp_entry(:script_src, 'https://scoutapm.com')
42
+ csp_entry(:script_src, 'https://apm.scoutapp.com')
43
+
44
+ csp_entry(:connect_src, 'https://apm.scoutapp.com')
45
+
46
+ csp_entry(:style_src, 'https://scoutapm.com')
47
+ csp_entry(:style_src, 'https://apm.scoutapp.com')
48
+ end
49
+ end
50
+
51
+ if CoalescingPanda.lti_options.has_key?(:allow_unsafe_eval) && CoalescingPanda.lti_options[:allow_unsafe_eval] == true
52
+ # For when code is returned from server and injected into dom. Need to have unsafe-eval or it won't work.
53
+ csp_entry(:script_src, "'unsafe-eval'")
54
+ end
55
+
56
+ # Detect and permit Sentry
57
+ if defined?(Raven) && Raven.configuration.server.present?
58
+ csp_entry(:connect_src, Raven.configuration.server)
59
+
60
+ # Report CSP Violations to Sentry
61
+ unless config.csp[:report_uri].present?
62
+ cfg = Raven.configuration
63
+ config.csp[:report_uri] = ["#{cfg.scheme}://#{cfg.host}/api/#{cfg.project_id}/security/?sentry_key=#{cfg.public_key}"] unless config.csp[:report_uri].present?
64
+ end
65
+ end
66
+
67
+ # Certain CSS-in-JS libraries inline the CSS, so we need to use unsafe-inline for them
68
+ csp_entry(:style_src, %w('self' 'unsafe-inline' blob: https://fonts.googleapis.com))
69
+ csp_entry(:font_src, %w('self' data: https://fonts.gstatic.com))
70
+
71
+ @config = nil
72
+
73
+ config
74
+ end
75
+
76
+ private
77
+
78
+ def self.csp_entry(key, *values)
79
+ values = values.flatten
80
+ @config.csp[key] ||= []
81
+ @config.csp[key] |= values
82
+ end
83
+ end
84
+ end
@@ -1,3 +1,3 @@
1
1
  module CoalescingPanda
2
- VERSION = '5.0.1'
2
+ VERSION = '5.0.7'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: coalescing_panda
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.0.1
4
+ version: 5.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nathan Mills
@@ -10,48 +10,48 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2020-07-22 00:00:00.000000000 Z
13
+ date: 2020-08-26 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rails
17
17
  requirement: !ruby/object:Gem::Requirement
18
18
  requirements:
19
- - - ~>
19
+ - - ">="
20
20
  - !ruby/object:Gem::Version
21
21
  version: 4.2.1
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  requirements:
26
- - - ~>
26
+ - - ">="
27
27
  - !ruby/object:Gem::Version
28
28
  version: 4.2.1
29
29
  - !ruby/object:Gem::Dependency
30
30
  name: bearcat
31
31
  requirement: !ruby/object:Gem::Requirement
32
32
  requirements:
33
- - - ~>
33
+ - - "~>"
34
34
  - !ruby/object:Gem::Version
35
35
  version: 1.3.0
36
36
  type: :runtime
37
37
  prerelease: false
38
38
  version_requirements: !ruby/object:Gem::Requirement
39
39
  requirements:
40
- - - ~>
40
+ - - "~>"
41
41
  - !ruby/object:Gem::Version
42
42
  version: 1.3.0
43
43
  - !ruby/object:Gem::Dependency
44
44
  name: browser
45
45
  requirement: !ruby/object:Gem::Requirement
46
46
  requirements:
47
- - - '>='
47
+ - - ">="
48
48
  - !ruby/object:Gem::Version
49
49
  version: '0'
50
50
  type: :runtime
51
51
  prerelease: false
52
52
  version_requirements: !ruby/object:Gem::Requirement
53
53
  requirements:
54
- - - '>='
54
+ - - ">="
55
55
  - !ruby/object:Gem::Version
56
56
  version: '0'
57
57
  - !ruby/object:Gem::Dependency
@@ -72,322 +72,328 @@ dependencies:
72
72
  name: ims-lti
73
73
  requirement: !ruby/object:Gem::Requirement
74
74
  requirements:
75
- - - '>='
75
+ - - "~>"
76
76
  - !ruby/object:Gem::Version
77
- version: 2.1.0
77
+ version: 1.2.0
78
+ - - "<"
79
+ - !ruby/object:Gem::Version
80
+ version: '2.0'
78
81
  type: :runtime
79
82
  prerelease: false
80
83
  version_requirements: !ruby/object:Gem::Requirement
81
84
  requirements:
82
- - - '>='
85
+ - - "~>"
86
+ - !ruby/object:Gem::Version
87
+ version: 1.2.0
88
+ - - "<"
83
89
  - !ruby/object:Gem::Version
84
- version: 2.1.0
90
+ version: '2.0'
85
91
  - !ruby/object:Gem::Dependency
86
92
  name: haml-rails
87
93
  requirement: !ruby/object:Gem::Requirement
88
94
  requirements:
89
- - - '>='
95
+ - - ">="
90
96
  - !ruby/object:Gem::Version
91
97
  version: '0'
92
98
  type: :runtime
93
99
  prerelease: false
94
100
  version_requirements: !ruby/object:Gem::Requirement
95
101
  requirements:
96
- - - '>='
102
+ - - ">="
97
103
  - !ruby/object:Gem::Version
98
104
  version: '0'
99
105
  - !ruby/object:Gem::Dependency
100
106
  name: sass-rails
101
107
  requirement: !ruby/object:Gem::Requirement
102
108
  requirements:
103
- - - '>='
109
+ - - ">="
104
110
  - !ruby/object:Gem::Version
105
111
  version: '3.2'
106
112
  type: :runtime
107
113
  prerelease: false
108
114
  version_requirements: !ruby/object:Gem::Requirement
109
115
  requirements:
110
- - - '>='
116
+ - - ">="
111
117
  - !ruby/object:Gem::Version
112
118
  version: '3.2'
113
119
  - !ruby/object:Gem::Dependency
114
120
  name: jquery-rails
115
121
  requirement: !ruby/object:Gem::Requirement
116
122
  requirements:
117
- - - '>='
123
+ - - ">="
118
124
  - !ruby/object:Gem::Version
119
125
  version: '0'
120
126
  type: :runtime
121
127
  prerelease: false
122
128
  version_requirements: !ruby/object:Gem::Requirement
123
129
  requirements:
124
- - - '>='
130
+ - - ">="
125
131
  - !ruby/object:Gem::Version
126
132
  version: '0'
127
133
  - !ruby/object:Gem::Dependency
128
134
  name: coffee-rails
129
135
  requirement: !ruby/object:Gem::Requirement
130
136
  requirements:
131
- - - '>='
137
+ - - ">="
132
138
  - !ruby/object:Gem::Version
133
139
  version: '0'
134
140
  type: :runtime
135
141
  prerelease: false
136
142
  version_requirements: !ruby/object:Gem::Requirement
137
143
  requirements:
138
- - - '>='
144
+ - - ">="
139
145
  - !ruby/object:Gem::Version
140
146
  version: '0'
141
147
  - !ruby/object:Gem::Dependency
142
148
  name: p3p
143
149
  requirement: !ruby/object:Gem::Requirement
144
150
  requirements:
145
- - - '>='
151
+ - - ">="
146
152
  - !ruby/object:Gem::Version
147
153
  version: '0'
148
154
  type: :runtime
149
155
  prerelease: false
150
156
  version_requirements: !ruby/object:Gem::Requirement
151
157
  requirements:
152
- - - '>='
158
+ - - ">="
153
159
  - !ruby/object:Gem::Version
154
160
  version: '0'
155
161
  - !ruby/object:Gem::Dependency
156
162
  name: delayed_job_active_record
157
163
  requirement: !ruby/object:Gem::Requirement
158
164
  requirements:
159
- - - '>='
165
+ - - ">="
160
166
  - !ruby/object:Gem::Version
161
167
  version: '0'
162
168
  type: :runtime
163
169
  prerelease: false
164
170
  version_requirements: !ruby/object:Gem::Requirement
165
171
  requirements:
166
- - - '>='
172
+ - - ">="
167
173
  - !ruby/object:Gem::Version
168
174
  version: '0'
169
175
  - !ruby/object:Gem::Dependency
170
176
  name: open_uri_redirections
171
177
  requirement: !ruby/object:Gem::Requirement
172
178
  requirements:
173
- - - '>='
179
+ - - ">="
174
180
  - !ruby/object:Gem::Version
175
181
  version: '0'
176
182
  type: :runtime
177
183
  prerelease: false
178
184
  version_requirements: !ruby/object:Gem::Requirement
179
185
  requirements:
180
- - - '>='
186
+ - - ">="
181
187
  - !ruby/object:Gem::Version
182
188
  version: '0'
183
189
  - !ruby/object:Gem::Dependency
184
190
  name: oauth
185
191
  requirement: !ruby/object:Gem::Requirement
186
192
  requirements:
187
- - - ~>
193
+ - - "~>"
188
194
  - !ruby/object:Gem::Version
189
195
  version: 0.5.4
190
196
  type: :runtime
191
197
  prerelease: false
192
198
  version_requirements: !ruby/object:Gem::Requirement
193
199
  requirements:
194
- - - ~>
200
+ - - "~>"
195
201
  - !ruby/object:Gem::Version
196
202
  version: 0.5.4
197
203
  - !ruby/object:Gem::Dependency
198
204
  name: rubyzip
199
205
  requirement: !ruby/object:Gem::Requirement
200
206
  requirements:
201
- - - '>='
207
+ - - ">="
202
208
  - !ruby/object:Gem::Version
203
209
  version: 1.0.0
204
210
  type: :runtime
205
211
  prerelease: false
206
212
  version_requirements: !ruby/object:Gem::Requirement
207
213
  requirements:
208
- - - '>='
214
+ - - ">="
209
215
  - !ruby/object:Gem::Version
210
216
  version: 1.0.0
211
217
  - !ruby/object:Gem::Dependency
212
218
  name: secure_headers
213
219
  requirement: !ruby/object:Gem::Requirement
214
220
  requirements:
215
- - - ~>
221
+ - - "~>"
216
222
  - !ruby/object:Gem::Version
217
223
  version: '6.3'
218
224
  type: :runtime
219
225
  prerelease: false
220
226
  version_requirements: !ruby/object:Gem::Requirement
221
227
  requirements:
222
- - - ~>
228
+ - - "~>"
223
229
  - !ruby/object:Gem::Version
224
230
  version: '6.3'
225
231
  - !ruby/object:Gem::Dependency
226
232
  name: zip-zip
227
233
  requirement: !ruby/object:Gem::Requirement
228
234
  requirements:
229
- - - '>='
235
+ - - ">="
230
236
  - !ruby/object:Gem::Version
231
237
  version: '0'
232
238
  type: :runtime
233
239
  prerelease: false
234
240
  version_requirements: !ruby/object:Gem::Requirement
235
241
  requirements:
236
- - - '>='
242
+ - - ">="
237
243
  - !ruby/object:Gem::Version
238
244
  version: '0'
239
245
  - !ruby/object:Gem::Dependency
240
246
  name: sqlite3
241
247
  requirement: !ruby/object:Gem::Requirement
242
248
  requirements:
243
- - - '>='
249
+ - - ">="
244
250
  - !ruby/object:Gem::Version
245
251
  version: '0'
246
252
  type: :development
247
253
  prerelease: false
248
254
  version_requirements: !ruby/object:Gem::Requirement
249
255
  requirements:
250
- - - '>='
256
+ - - ">="
251
257
  - !ruby/object:Gem::Version
252
258
  version: '0'
253
259
  - !ruby/object:Gem::Dependency
254
260
  name: rspec-rails
255
261
  requirement: !ruby/object:Gem::Requirement
256
262
  requirements:
257
- - - '>='
263
+ - - ">="
258
264
  - !ruby/object:Gem::Version
259
265
  version: '0'
260
266
  type: :development
261
267
  prerelease: false
262
268
  version_requirements: !ruby/object:Gem::Requirement
263
269
  requirements:
264
- - - '>='
270
+ - - ">="
265
271
  - !ruby/object:Gem::Version
266
272
  version: '0'
267
273
  - !ruby/object:Gem::Dependency
268
274
  name: factory_girl_rails
269
275
  requirement: !ruby/object:Gem::Requirement
270
276
  requirements:
271
- - - '>='
277
+ - - ">="
272
278
  - !ruby/object:Gem::Version
273
279
  version: '0'
274
280
  type: :development
275
281
  prerelease: false
276
282
  version_requirements: !ruby/object:Gem::Requirement
277
283
  requirements:
278
- - - '>='
284
+ - - ">="
279
285
  - !ruby/object:Gem::Version
280
286
  version: '0'
281
287
  - !ruby/object:Gem::Dependency
282
288
  name: shoulda-matchers
283
289
  requirement: !ruby/object:Gem::Requirement
284
290
  requirements:
285
- - - '>='
291
+ - - ">="
286
292
  - !ruby/object:Gem::Version
287
293
  version: '0'
288
294
  type: :development
289
295
  prerelease: false
290
296
  version_requirements: !ruby/object:Gem::Requirement
291
297
  requirements:
292
- - - '>='
298
+ - - ">="
293
299
  - !ruby/object:Gem::Version
294
300
  version: '0'
295
301
  - !ruby/object:Gem::Dependency
296
302
  name: nokogiri
297
303
  requirement: !ruby/object:Gem::Requirement
298
304
  requirements:
299
- - - '>='
305
+ - - ">="
300
306
  - !ruby/object:Gem::Version
301
307
  version: '0'
302
308
  type: :development
303
309
  prerelease: false
304
310
  version_requirements: !ruby/object:Gem::Requirement
305
311
  requirements:
306
- - - '>='
312
+ - - ">="
307
313
  - !ruby/object:Gem::Version
308
314
  version: '0'
309
315
  - !ruby/object:Gem::Dependency
310
316
  name: simplecov
311
317
  requirement: !ruby/object:Gem::Requirement
312
318
  requirements:
313
- - - '>='
319
+ - - ">="
314
320
  - !ruby/object:Gem::Version
315
321
  version: '0'
316
322
  type: :development
317
323
  prerelease: false
318
324
  version_requirements: !ruby/object:Gem::Requirement
319
325
  requirements:
320
- - - '>='
326
+ - - ">="
321
327
  - !ruby/object:Gem::Version
322
328
  version: '0'
323
329
  - !ruby/object:Gem::Dependency
324
330
  name: byebug
325
331
  requirement: !ruby/object:Gem::Requirement
326
332
  requirements:
327
- - - '>='
333
+ - - ">="
328
334
  - !ruby/object:Gem::Version
329
335
  version: '0'
330
336
  type: :development
331
337
  prerelease: false
332
338
  version_requirements: !ruby/object:Gem::Requirement
333
339
  requirements:
334
- - - '>='
340
+ - - ">="
335
341
  - !ruby/object:Gem::Version
336
342
  version: '0'
337
343
  - !ruby/object:Gem::Dependency
338
344
  name: pry
339
345
  requirement: !ruby/object:Gem::Requirement
340
346
  requirements:
341
- - - '>='
347
+ - - ">="
342
348
  - !ruby/object:Gem::Version
343
349
  version: '0'
344
350
  type: :development
345
351
  prerelease: false
346
352
  version_requirements: !ruby/object:Gem::Requirement
347
353
  requirements:
348
- - - '>='
354
+ - - ">="
349
355
  - !ruby/object:Gem::Version
350
356
  version: '0'
351
357
  - !ruby/object:Gem::Dependency
352
358
  name: webmock
353
359
  requirement: !ruby/object:Gem::Requirement
354
360
  requirements:
355
- - - '>='
361
+ - - ">="
356
362
  - !ruby/object:Gem::Version
357
363
  version: '0'
358
364
  type: :development
359
365
  prerelease: false
360
366
  version_requirements: !ruby/object:Gem::Requirement
361
367
  requirements:
362
- - - '>='
368
+ - - ">="
363
369
  - !ruby/object:Gem::Version
364
370
  version: '0'
365
371
  - !ruby/object:Gem::Dependency
366
372
  name: lol_dba
367
373
  requirement: !ruby/object:Gem::Requirement
368
374
  requirements:
369
- - - '>='
375
+ - - ">="
370
376
  - !ruby/object:Gem::Version
371
377
  version: '0'
372
378
  type: :development
373
379
  prerelease: false
374
380
  version_requirements: !ruby/object:Gem::Requirement
375
381
  requirements:
376
- - - '>='
382
+ - - ">="
377
383
  - !ruby/object:Gem::Version
378
384
  version: '0'
379
385
  - !ruby/object:Gem::Dependency
380
386
  name: database_cleaner
381
387
  requirement: !ruby/object:Gem::Requirement
382
388
  requirements:
383
- - - '>='
389
+ - - ">="
384
390
  - !ruby/object:Gem::Version
385
391
  version: '0'
386
392
  type: :development
387
393
  prerelease: false
388
394
  version_requirements: !ruby/object:Gem::Requirement
389
395
  requirements:
390
- - - '>='
396
+ - - ">="
391
397
  - !ruby/object:Gem::Version
392
398
  version: '0'
393
399
  description:
@@ -399,156 +405,160 @@ executables: []
399
405
  extensions: []
400
406
  extra_rdoc_files: []
401
407
  files:
408
+ - Rakefile
409
+ - app/assets/config/coalescing_panda/manifest.js
410
+ - app/assets/images/bootstrap/glyphicons-halflings-white.png
411
+ - app/assets/images/bootstrap/glyphicons-halflings.png
412
+ - app/assets/javascripts/coalescing_panda/application.js
413
+ - app/assets/javascripts/coalescing_panda/canvas_batch.js.coffee
414
+ - app/assets/javascripts/coalescing_panda/oauth2.js.coffee
415
+ - app/assets/stylesheets/coalescing_panda/application.css.scss
416
+ - app/assets/stylesheets/coalescing_panda/launch.css.scss
417
+ - app/assets/stylesheets/coalescing_panda/progress.css.scss
418
+ - app/controllers/coalescing_panda/application_controller.rb
419
+ - app/controllers/coalescing_panda/canvas_batches_controller.rb
420
+ - app/controllers/coalescing_panda/lti_controller.rb
421
+ - app/controllers/coalescing_panda/oauth2_controller.rb
422
+ - app/helpers/coalescing_panda/canvas_batches_helper.rb
423
+ - app/models/coalescing_panda/assignment.rb
402
424
  - app/models/coalescing_panda/assignment_group.rb
403
- - app/models/coalescing_panda/group_membership.rb
404
- - app/models/coalescing_panda/enrollment.rb
425
+ - app/models/coalescing_panda/canvas_api_auth.rb
405
426
  - app/models/coalescing_panda/canvas_batch.rb
406
- - app/models/coalescing_panda/assignment.rb
427
+ - app/models/coalescing_panda/course.rb
428
+ - app/models/coalescing_panda/enrollment.rb
407
429
  - app/models/coalescing_panda/group.rb
408
- - app/models/coalescing_panda/session.rb
409
- - app/models/coalescing_panda/section.rb
410
- - app/models/coalescing_panda/term.rb
430
+ - app/models/coalescing_panda/group_category.rb
431
+ - app/models/coalescing_panda/group_membership.rb
432
+ - app/models/coalescing_panda/json_with_indifferent_access.rb
433
+ - app/models/coalescing_panda/lti_account.rb
434
+ - app/models/coalescing_panda/lti_nonce.rb
411
435
  - app/models/coalescing_panda/oauth_state.rb
436
+ - app/models/coalescing_panda/persistent_session.rb
437
+ - app/models/coalescing_panda/section.rb
438
+ - app/models/coalescing_panda/session.rb
412
439
  - app/models/coalescing_panda/submission.rb
413
- - app/models/coalescing_panda/canvas_api_auth.rb
440
+ - app/models/coalescing_panda/term.rb
441
+ - app/models/coalescing_panda/user.rb
414
442
  - app/models/coalescing_panda/workers/account_miner.rb
415
- - app/models/coalescing_panda/workers/provisioning_miner.rb
416
443
  - app/models/coalescing_panda/workers/course_miner.rb
417
- - app/models/coalescing_panda/lti_nonce.rb
418
- - app/models/coalescing_panda/course.rb
419
- - app/models/coalescing_panda/persistent_session.rb
420
- - app/models/coalescing_panda/lti_account.rb
421
- - app/models/coalescing_panda/user.rb
422
- - app/models/coalescing_panda/group_category.rb
444
+ - app/models/coalescing_panda/workers/provisioning_miner.rb
423
445
  - app/models/concerns/single_table_polymorphic.rb
424
- - app/controllers/coalescing_panda/oauth2_controller.rb
425
- - app/controllers/coalescing_panda/application_controller.rb
426
- - app/controllers/coalescing_panda/lti_controller.rb
427
- - app/controllers/coalescing_panda/canvas_batches_controller.rb
446
+ - app/views/coalescing_panda/canvas_batches/_canvas_batch.html.haml
447
+ - app/views/coalescing_panda/canvas_batches/_canvas_batch_flash.html.haml
448
+ - app/views/coalescing_panda/launch.html.haml
449
+ - app/views/coalescing_panda/lti/iframe_cookie_fix.html.erb
428
450
  - app/views/coalescing_panda/oauth2/oauth2.html.haml
429
451
  - app/views/coalescing_panda/oauth2/redirect.html.haml
430
- - app/views/coalescing_panda/launch.html.haml
431
452
  - app/views/coalescing_panda/styleguide/styleguide.html
432
- - app/views/coalescing_panda/lti/iframe_cookie_fix.html.erb
433
- - app/views/coalescing_panda/canvas_batches/_canvas_batch.html.haml
434
- - app/views/coalescing_panda/canvas_batches/_canvas_batch_flash.html.haml
435
453
  - app/views/layouts/coalescing_panda/application.html.erb
436
- - app/assets/images/bootstrap/glyphicons-halflings.png
437
- - app/assets/images/bootstrap/glyphicons-halflings-white.png
438
- - app/assets/javascripts/coalescing_panda/oauth2.js.coffee
439
- - app/assets/javascripts/coalescing_panda/application.js
440
- - app/assets/javascripts/coalescing_panda/canvas_batch.js.coffee
441
- - app/assets/stylesheets/coalescing_panda/progress.css.scss
442
- - app/assets/stylesheets/coalescing_panda/application.css.scss
443
- - app/assets/stylesheets/coalescing_panda/launch.css.scss
444
- - app/helpers/coalescing_panda/canvas_batches_helper.rb
445
454
  - config/routes.rb
446
455
  - config/styleguide.yml
447
- - db/migrate/20141120151432_create_coalescing_panda_sections.rb
448
- - db/migrate/20150602205257_add_option_to_canvas_batches.rb
449
- - db/migrate/20150811140030_add_fields_to_users.rb
456
+ - db/migrate/20131114150001_create_coalescing_panda_canvas_api_auths.rb
450
457
  - db/migrate/20131118211442_create_coalescing_panda_lti_accounts.rb
451
- - db/migrate/20150506192717_add_assignment_group_id_to_assignments.rb
452
- - db/migrate/20160830183155_create_coalescing_panda_oauth_states.rb
458
+ - db/migrate/20131119165343_create_coalescing_panda_lti_nonces.rb
459
+ - db/migrate/20140904223159_create_coalescing_panda_sessions.rb
460
+ - db/migrate/20141119225319_create_coalescing_panda_terms.rb
461
+ - db/migrate/20141119225721_create_coalescing_panda_courses.rb
462
+ - db/migrate/20141120151432_create_coalescing_panda_sections.rb
463
+ - db/migrate/20141120151940_create_coalescing_panda_assignments.rb
464
+ - db/migrate/20141120152458_create_coalescing_panda_users.rb
453
465
  - db/migrate/20141120152546_create_coalescing_panda_submissions.rb
466
+ - db/migrate/20141120153135_create_coalescing_panda_enrollments.rb
467
+ - db/migrate/20141121174846_create_coalescing_panda_canvas_batches.rb
468
+ - db/migrate/20141124160857_create_delayed_jobs.rb
454
469
  - db/migrate/20141208221740_add_submission_types_to_assignments.rb
455
- - db/migrate/20150709192717_add_leader_id_to_groups.rb
470
+ - db/migrate/20150106175418_add_group_category_id_to_assignment.rb
471
+ - db/migrate/20150106180131_add_published_to_assignments.rb
472
+ - db/migrate/20150107205405_create_coalescing_panda_groups.rb
456
473
  - db/migrate/20150107205413_create_coalescing_panda_group_memberships.rb
457
- - db/migrate/20141120152458_create_coalescing_panda_users.rb
458
- - db/migrate/20141121174846_create_coalescing_panda_canvas_batches.rb
459
- - db/migrate/20150708192717_add_group_moderator_to_group_memberships.rb
460
474
  - db/migrate/20150210180516_add_context_to_canvas_batch.rb
461
- - db/migrate/20141120151940_create_coalescing_panda_assignments.rb
462
- - db/migrate/20140904223159_create_coalescing_panda_sessions.rb
463
475
  - db/migrate/20150506183335_create_coalescing_panda_assignment_groups.rb
464
- - db/migrate/20141120153135_create_coalescing_panda_enrollments.rb
465
- - db/migrate/20150107205405_create_coalescing_panda_groups.rb
466
- - db/migrate/20141119225721_create_coalescing_panda_courses.rb
467
- - db/migrate/20200528224505_create_coalescing_panda_persistent_session.rb
468
- - db/migrate/20141124160857_create_delayed_jobs.rb
469
- - db/migrate/20131119165343_create_coalescing_panda_lti_nonces.rb
470
- - db/migrate/20150106180131_add_published_to_assignments.rb
476
+ - db/migrate/20150506192717_add_assignment_group_id_to_assignments.rb
471
477
  - db/migrate/20150526144713_add_account_to_canvas_batches.rb
472
- - db/migrate/20150106175418_add_group_category_id_to_assignment.rb
478
+ - db/migrate/20150602205257_add_option_to_canvas_batches.rb
479
+ - db/migrate/20150708192717_add_group_moderator_to_group_memberships.rb
480
+ - db/migrate/20150709192717_add_leader_id_to_groups.rb
473
481
  - db/migrate/20150714205405_create_coalescing_panda_group_categories.rb
482
+ - db/migrate/20150811140030_add_fields_to_users.rb
474
483
  - db/migrate/20151209155923_add_refresh_settings_to_canvas_api_auth.rb
475
- - db/migrate/20131114150001_create_coalescing_panda_canvas_api_auths.rb
476
- - db/migrate/20141119225319_create_coalescing_panda_terms.rb
477
- - lib/tasks/coalescing_panda_tasks.rake
484
+ - db/migrate/20160830183155_create_coalescing_panda_oauth_states.rb
485
+ - db/migrate/20200528224505_create_coalescing_panda_persistent_session.rb
478
486
  - lib/coalescing_panda.rb
479
- - lib/coalescing_panda/controller_helpers.rb
480
487
  - lib/coalescing_panda/bearcat_uri.rb
488
+ - lib/coalescing_panda/controller_helpers.rb
481
489
  - lib/coalescing_panda/engine.rb
482
- - lib/coalescing_panda/version.rb
490
+ - lib/coalescing_panda/misc_helper.rb
483
491
  - lib/coalescing_panda/route_helpers.rb
484
- - Rakefile
485
- - spec/spec_helper.rb
486
- - spec/dummy/app/models/account.rb
487
- - spec/dummy/app/models/course.rb
488
- - spec/dummy/app/controllers/application_controller.rb
489
- - spec/dummy/app/views/layouts/application.html.erb
492
+ - lib/coalescing_panda/secure_headers.rb
493
+ - lib/coalescing_panda/version.rb
494
+ - lib/tasks/coalescing_panda_tasks.rake
495
+ - spec/controllers/coalescing_panda/canvas_batches_controller_spec.rb
496
+ - spec/controllers/coalescing_panda/lti_controller_spec.rb
497
+ - spec/controllers/coalescing_panda/oauth2_controller_spec.rb
498
+ - spec/dummy/README.rdoc
499
+ - spec/dummy/Rakefile
490
500
  - spec/dummy/app/assets/javascripts/application.js
491
501
  - spec/dummy/app/assets/stylesheets/application.css
502
+ - spec/dummy/app/controllers/application_controller.rb
492
503
  - spec/dummy/app/helpers/application_helper.rb
493
- - spec/dummy/bin/rake
504
+ - spec/dummy/app/models/account.rb
505
+ - spec/dummy/app/models/course.rb
506
+ - spec/dummy/app/views/layouts/application.html.erb
494
507
  - spec/dummy/bin/bundle
495
508
  - spec/dummy/bin/rails
496
- - spec/dummy/config/routes.rb
497
- - spec/dummy/config/locales/en.yml
498
- - spec/dummy/config/environments/production.rb
499
- - spec/dummy/config/environments/development.rb
500
- - spec/dummy/config/environments/test.rb
501
- - spec/dummy/config/environment.rb
509
+ - spec/dummy/bin/rake
510
+ - spec/dummy/config.ru
502
511
  - spec/dummy/config/application.rb
503
- - spec/dummy/config/database.yml
504
512
  - spec/dummy/config/boot.rb
505
- - spec/dummy/config/initializers/lti_initializer.rb
513
+ - spec/dummy/config/database.yml
514
+ - spec/dummy/config/environment.rb
515
+ - spec/dummy/config/environments/development.rb
516
+ - spec/dummy/config/environments/production.rb
517
+ - spec/dummy/config/environments/test.rb
506
518
  - spec/dummy/config/initializers/backtrace_silencers.rb
507
- - spec/dummy/config/initializers/mime_types.rb
508
519
  - spec/dummy/config/initializers/filter_parameter_logging.rb
520
+ - spec/dummy/config/initializers/inflections.rb
521
+ - spec/dummy/config/initializers/lti_initializer.rb
522
+ - spec/dummy/config/initializers/mime_types.rb
523
+ - spec/dummy/config/initializers/secret_token.rb
509
524
  - spec/dummy/config/initializers/session_store.rb
510
525
  - spec/dummy/config/initializers/wrap_parameters.rb
511
- - spec/dummy/config/initializers/secret_token.rb
512
- - spec/dummy/config/initializers/inflections.rb
513
- - spec/dummy/config.ru
514
- - spec/dummy/Rakefile
515
- - spec/dummy/public/favicon.ico
526
+ - spec/dummy/config/locales/en.yml
527
+ - spec/dummy/config/routes.rb
528
+ - spec/dummy/db/schema.rb
529
+ - spec/dummy/public/404.html
516
530
  - spec/dummy/public/422.html
517
531
  - spec/dummy/public/500.html
518
- - spec/dummy/public/404.html
519
- - spec/dummy/db/schema.rb
520
- - spec/dummy/README.rdoc
521
- - spec/models/coalescing_panda/enrollment_spec.rb
522
- - spec/models/coalescing_panda/section_spec.rb
523
- - spec/models/coalescing_panda/lti_nonce_spec.rb
524
- - spec/models/coalescing_panda/lti_account_spec.rb
525
- - spec/models/coalescing_panda/canvas_batch_spec.rb
526
- - spec/models/coalescing_panda/term_spec.rb
527
- - spec/models/coalescing_panda/assignment_spec.rb
528
- - spec/models/coalescing_panda/submission_spec.rb
529
- - spec/models/coalescing_panda/assignment_group_spec.rb
530
- - spec/models/coalescing_panda/group_spec.rb
531
- - spec/models/coalescing_panda/workers/account_miner_spec.rb
532
- - spec/models/coalescing_panda/workers/course_miner_spec.rb
533
- - spec/models/coalescing_panda/canvas_api_auth_spec.rb
534
- - spec/models/coalescing_panda/group_membership_spec.rb
535
- - spec/models/coalescing_panda/user_spec.rb
536
- - spec/models/coalescing_panda/course_spec.rb
537
- - spec/factories/courses.rb
538
- - spec/factories/submissions.rb
532
+ - spec/dummy/public/favicon.ico
533
+ - spec/factories/accounts.rb
539
534
  - spec/factories/assignment_groups.rb
540
535
  - spec/factories/assignments.rb
541
536
  - spec/factories/canvas_api_auths.rb
542
- - spec/factories/enrollments.rb
543
537
  - spec/factories/canvas_batches.rb
538
+ - spec/factories/courses.rb
539
+ - spec/factories/enrollments.rb
544
540
  - spec/factories/sections.rb
545
- - spec/factories/accounts.rb
546
- - spec/factories/users.rb
541
+ - spec/factories/submissions.rb
547
542
  - spec/factories/terms.rb
548
- - spec/controllers/coalescing_panda/canvas_batches_controller_spec.rb
549
- - spec/controllers/coalescing_panda/oauth2_controller_spec.rb
550
- - spec/controllers/coalescing_panda/lti_controller_spec.rb
543
+ - spec/factories/users.rb
544
+ - spec/models/coalescing_panda/assignment_group_spec.rb
545
+ - spec/models/coalescing_panda/assignment_spec.rb
546
+ - spec/models/coalescing_panda/canvas_api_auth_spec.rb
547
+ - spec/models/coalescing_panda/canvas_batch_spec.rb
548
+ - spec/models/coalescing_panda/course_spec.rb
549
+ - spec/models/coalescing_panda/enrollment_spec.rb
550
+ - spec/models/coalescing_panda/group_membership_spec.rb
551
+ - spec/models/coalescing_panda/group_spec.rb
552
+ - spec/models/coalescing_panda/lti_account_spec.rb
553
+ - spec/models/coalescing_panda/lti_nonce_spec.rb
554
+ - spec/models/coalescing_panda/section_spec.rb
555
+ - spec/models/coalescing_panda/submission_spec.rb
556
+ - spec/models/coalescing_panda/term_spec.rb
557
+ - spec/models/coalescing_panda/user_spec.rb
558
+ - spec/models/coalescing_panda/workers/account_miner_spec.rb
559
+ - spec/models/coalescing_panda/workers/course_miner_spec.rb
551
560
  - spec/rails_helper.rb
561
+ - spec/spec_helper.rb
552
562
  homepage: http://www.instructure.com
553
563
  licenses: []
554
564
  metadata: {}
@@ -558,17 +568,16 @@ require_paths:
558
568
  - lib
559
569
  required_ruby_version: !ruby/object:Gem::Requirement
560
570
  requirements:
561
- - - '>='
571
+ - - ">="
562
572
  - !ruby/object:Gem::Version
563
573
  version: '0'
564
574
  required_rubygems_version: !ruby/object:Gem::Requirement
565
575
  requirements:
566
- - - '>='
576
+ - - ">="
567
577
  - !ruby/object:Gem::Version
568
578
  version: '0'
569
579
  requirements: []
570
- rubyforge_project:
571
- rubygems_version: 2.0.14
580
+ rubygems_version: 3.1.2
572
581
  signing_key:
573
582
  specification_version: 4
574
583
  summary: Canvas LTI and OAUTH2 mountable engine