coalescing_panda 5.0.3 → 5.0.9
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 +5 -5
- data/app/controllers/coalescing_panda/canvas_batches_controller.rb +2 -2
- data/app/controllers/coalescing_panda/lti_controller.rb +1 -1
- data/app/helpers/coalescing_panda/canvas_batches_helper.rb +1 -1
- data/app/views/coalescing_panda/canvas_batches/_canvas_batch_flash.html.haml +3 -3
- data/db/migrate/20131114150001_create_coalescing_panda_canvas_api_auths.rb +1 -1
- data/db/migrate/20131118211442_create_coalescing_panda_lti_accounts.rb +1 -1
- data/db/migrate/20131119165343_create_coalescing_panda_lti_nonces.rb +1 -1
- data/db/migrate/20140904223159_create_coalescing_panda_sessions.rb +1 -1
- data/db/migrate/20141119225319_create_coalescing_panda_terms.rb +1 -1
- data/db/migrate/20141119225721_create_coalescing_panda_courses.rb +1 -1
- data/db/migrate/20141120151432_create_coalescing_panda_sections.rb +1 -1
- data/db/migrate/20141120151940_create_coalescing_panda_assignments.rb +1 -1
- data/db/migrate/20141120152458_create_coalescing_panda_users.rb +1 -1
- data/db/migrate/20141120152546_create_coalescing_panda_submissions.rb +1 -1
- data/db/migrate/20141120153135_create_coalescing_panda_enrollments.rb +1 -1
- data/db/migrate/20141121174846_create_coalescing_panda_canvas_batches.rb +1 -1
- data/db/migrate/20141124160857_create_delayed_jobs.rb +1 -1
- data/db/migrate/20141208221740_add_submission_types_to_assignments.rb +1 -1
- data/db/migrate/20150106175418_add_group_category_id_to_assignment.rb +1 -1
- data/db/migrate/20150106180131_add_published_to_assignments.rb +1 -1
- data/db/migrate/20150107205405_create_coalescing_panda_groups.rb +1 -1
- data/db/migrate/20150107205413_create_coalescing_panda_group_memberships.rb +1 -1
- data/db/migrate/20150210180516_add_context_to_canvas_batch.rb +1 -1
- data/db/migrate/20150506183335_create_coalescing_panda_assignment_groups.rb +1 -1
- data/db/migrate/20150506192717_add_assignment_group_id_to_assignments.rb +1 -1
- data/db/migrate/20150526144713_add_account_to_canvas_batches.rb +1 -1
- data/db/migrate/20150602205257_add_option_to_canvas_batches.rb +1 -1
- data/db/migrate/20150708192717_add_group_moderator_to_group_memberships.rb +1 -1
- data/db/migrate/20150709192717_add_leader_id_to_groups.rb +1 -1
- data/db/migrate/20150714205405_create_coalescing_panda_group_categories.rb +1 -1
- data/db/migrate/20150811140030_add_fields_to_users.rb +1 -1
- data/db/migrate/20151209155923_add_refresh_settings_to_canvas_api_auth.rb +1 -1
- data/db/migrate/20160830183155_create_coalescing_panda_oauth_states.rb +1 -1
- data/db/migrate/20200528224505_create_coalescing_panda_persistent_session.rb +1 -1
- data/lib/coalescing_panda/controller_helpers.rb +3 -5
- data/lib/coalescing_panda/engine.rb +8 -42
- data/lib/coalescing_panda/misc_helper.rb +13 -0
- data/lib/coalescing_panda/secure_headers.rb +84 -0
- data/lib/coalescing_panda/version.rb +1 -1
- metadata +173 -164
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: 9b34aab2ab63066e86c9799e4e564129b1b30186
|
|
4
|
+
data.tar.gz: b486b6be2efcf0807da76b573cd7212b1fdd5d8d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: cba63bdaeb3f4255e354112f217fe80b134e5c28ed2ebffe931df625f1ff640960ae75510ee0b7018d697ae39ceaec246e63c6410409a43217f37753d956df02
|
|
7
|
+
data.tar.gz: 74735105c7609b9524c40f1b5b0122f937a18036ccdaae32ff16324b0f19d3f90d98d309120afc80ea12b6cf6eb3ecb50b5f00fde6c14c68987a3035ec10cd08
|
|
@@ -12,13 +12,13 @@ module CoalescingPanda
|
|
|
12
12
|
@batch.status = 'Queued'
|
|
13
13
|
@batch.save
|
|
14
14
|
worker = CoalescingPanda::Workers::CourseMiner.new(@batch.context, @batch.options)
|
|
15
|
-
|
|
15
|
+
current_session_data[:canvas_batch_id] = worker.batch.id
|
|
16
16
|
worker.start(true)
|
|
17
17
|
redirect_to :back
|
|
18
18
|
end
|
|
19
19
|
|
|
20
20
|
def clear_batch_session
|
|
21
|
-
|
|
21
|
+
current_session_data[:canvas_batch_id] = nil
|
|
22
22
|
render nothing: true
|
|
23
23
|
end
|
|
24
24
|
end
|
|
@@ -17,7 +17,7 @@ module CoalescingPanda
|
|
|
17
17
|
lti_nav[:account][:text] = params[:account_navigation_label] if params[:account_navigation_label].present?
|
|
18
18
|
platform = 'canvas.instructure.com'
|
|
19
19
|
host = "#{request.scheme}://#{request.host_with_port}"
|
|
20
|
-
tc = IMS::LTI::
|
|
20
|
+
tc = IMS::LTI::ToolConfig.new(:title => lti_options[:title], :launch_url => ("#{host}#{lti_options[:launch_route]}") || 'ABC')
|
|
21
21
|
tc.set_ext_param(platform, :domain, request.host)
|
|
22
22
|
tc.set_ext_param(platform, :privacy_level, 'public')
|
|
23
23
|
tc.set_custom_param(:custom_canvas_role, '$Canvas.membership.roles')
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
module CoalescingPanda
|
|
2
2
|
module CanvasBatchesHelper
|
|
3
3
|
def current_batch
|
|
4
|
-
@current_batch ||= CoalescingPanda::CanvasBatch.find_by_id(
|
|
4
|
+
@current_batch ||= CoalescingPanda::CanvasBatch.find_by_id(current_session_data[:canvas_batch_id])
|
|
5
5
|
end
|
|
6
6
|
end
|
|
7
7
|
end
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
- if current_batch.present?
|
|
2
|
-
- path = CoalescingPanda::Engine.routes.url_helpers.canvas_batch_path(current_batch)
|
|
3
|
-
- clear_path = CoalescingPanda::Engine.routes.url_helpers.clear_batch_session_path
|
|
4
|
-
#batch-progress{data: {batch: current_batch.try(:to_json), url: path, clear_path: clear_path} }
|
|
2
|
+
- path = CoalescingPanda::Engine.routes.url_helpers.canvas_batch_path(current_batch) + "?encrypted_session_key=#{encrypted_session_key}"
|
|
3
|
+
- clear_path = CoalescingPanda::Engine.routes.url_helpers.clear_batch_session_path + "?encrypted_session_key=#{encrypted_session_key}"
|
|
4
|
+
#batch-progress{data: {batch: current_batch.try(:to_json), url: path, clear_path: clear_path} }
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
class CreateDelayedJobs <
|
|
1
|
+
class CreateDelayedJobs < CoalescingPanda::MiscHelper::MigrationClass
|
|
2
2
|
def self.up
|
|
3
3
|
create_table :delayed_jobs, :force => true do |table|
|
|
4
4
|
table.integer :priority, :default => 0, :null => false # Allows some jobs to jump to the front of the queue
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
class AddGroupCategoryIdToAssignment <
|
|
1
|
+
class AddGroupCategoryIdToAssignment < CoalescingPanda::MiscHelper::MigrationClass
|
|
2
2
|
def change
|
|
3
3
|
add_column :coalescing_panda_assignments, :group_category_id, :integer
|
|
4
4
|
add_column :coalescing_panda_assignments, :grade_group_students_individually, :boolean
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
class AddContextToCanvasBatch <
|
|
1
|
+
class AddContextToCanvasBatch < CoalescingPanda::MiscHelper::MigrationClass
|
|
2
2
|
def change
|
|
3
3
|
add_column :coalescing_panda_canvas_batches, :context_id, :integer
|
|
4
4
|
add_column :coalescing_panda_canvas_batches, :context_type, :string
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
class CreateCoalescingPandaAssignmentGroups <
|
|
1
|
+
class CreateCoalescingPandaAssignmentGroups < CoalescingPanda::MiscHelper::MigrationClass
|
|
2
2
|
def change
|
|
3
3
|
create_table :coalescing_panda_assignment_groups do |t|
|
|
4
4
|
t.belongs_to :coalescing_panda_course, null: false
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
class AddLeaderIdToGroups <
|
|
1
|
+
class AddLeaderIdToGroups < CoalescingPanda::MiscHelper::MigrationClass
|
|
2
2
|
def change
|
|
3
3
|
add_column :coalescing_panda_groups, :leader_id, :integer
|
|
4
4
|
add_foreign_key :coalescing_panda_groups, :coalescing_panda_users, column: :leader_id, primary_key: "id"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
class CreateCoalescingPandaGroupCategories <
|
|
1
|
+
class CreateCoalescingPandaGroupCategories < CoalescingPanda::MiscHelper::MigrationClass
|
|
2
2
|
def change
|
|
3
3
|
create_table :coalescing_panda_group_categories do |t|
|
|
4
4
|
t.belongs_to :context, polymorphic: true
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
class AddRefreshSettingsToCanvasApiAuth <
|
|
1
|
+
class AddRefreshSettingsToCanvasApiAuth < CoalescingPanda::MiscHelper::MigrationClass
|
|
2
2
|
def change
|
|
3
3
|
add_column :coalescing_panda_canvas_api_auths, :refresh_token, :string
|
|
4
4
|
add_column :coalescing_panda_canvas_api_auths, :expires_at, :datetime
|
|
@@ -81,9 +81,7 @@ module CoalescingPanda
|
|
|
81
81
|
client = Bearcat::Client.new(prefix: uri.prefix)
|
|
82
82
|
state = SecureRandom.hex(32)
|
|
83
83
|
OauthState.create! state_key: state, data: { key: params['oauth_consumer_key'], user_id: user_id, api_domain: uri.api_domain }
|
|
84
|
-
|
|
85
|
-
redirect_url = [coalescing_panda_url, redirect_path.sub(/^\/lti/, '')].join
|
|
86
|
-
@canvas_url = client.auth_redirect_url(client_id, redirect_url, { state: state })
|
|
84
|
+
@canvas_url = client.auth_redirect_url(client_id, coalescing_panda.oauth2_redirect_url, { state: state })
|
|
87
85
|
|
|
88
86
|
#delete the added params so the original oauth sig still works
|
|
89
87
|
@lti_params = params.to_hash
|
|
@@ -146,8 +144,8 @@ module CoalescingPanda
|
|
|
146
144
|
authorized = false
|
|
147
145
|
if (@lti_account = params['oauth_consumer_key'] && LtiAccount.find_by_key(params['oauth_consumer_key']))
|
|
148
146
|
sanitized_params = sanitize_params
|
|
149
|
-
|
|
150
|
-
authorized =
|
|
147
|
+
@tp = IMS::LTI::ToolProvider.new(@lti_account.key, @lti_account.secret, sanitized_params)
|
|
148
|
+
authorized = @tp.valid_request?(request)
|
|
151
149
|
end
|
|
152
150
|
logger.info 'not authorized on tp valid request' unless authorized
|
|
153
151
|
authorized = authorized && (roles.count == 0 || (roles & lti_roles).count > 0)
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
require 'secure_headers'
|
|
2
|
+
require_relative './secure_headers'
|
|
2
3
|
|
|
3
4
|
module CoalescingPanda
|
|
4
5
|
class Engine < ::Rails::Engine
|
|
@@ -42,56 +43,21 @@ module CoalescingPanda
|
|
|
42
43
|
end
|
|
43
44
|
|
|
44
45
|
initializer :secure_headers do |app|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
if Rails.env.development?
|
|
49
|
-
# Allow webpack-dev-server to work
|
|
50
|
-
connect_src << "http://localhost:3035"
|
|
51
|
-
connect_src << "ws://localhost:3035"
|
|
52
|
-
|
|
53
|
-
# Allow stuff like rack-mini-profiler to work in development:
|
|
54
|
-
# https://github.com/MiniProfiler/rack-mini-profiler/issues/327
|
|
55
|
-
# DON'T ENABLE THIS FOR PRODUCTION!
|
|
56
|
-
script_src << "'unsafe-eval'"
|
|
57
|
-
elsif CoalescingPanda.lti_options.has_key?(:allow_unsafe_eval) && CoalescingPanda.lti_options[:allow_unsafe_eval] == true
|
|
58
|
-
# For when code is returned from server and injected into dom. Need to have unsafe-eval or it won't work.
|
|
59
|
-
script_src << "'unsafe-eval'"
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
SecureHeaders::Configuration.default do |config|
|
|
63
|
-
# The default cookie headers aren't compatible with PandaPal cookies currently
|
|
64
|
-
config.cookies = { samesite: { none: true } }
|
|
65
|
-
|
|
66
|
-
if Rails.env.production?
|
|
67
|
-
config.cookies[:secure] = true
|
|
46
|
+
begin
|
|
47
|
+
::SecureHeaders::Configuration.default do |config|
|
|
48
|
+
CoalescingPanda::SecureHeaders.apply_defaults(config)
|
|
68
49
|
end
|
|
69
|
-
|
|
70
|
-
#
|
|
71
|
-
config.x_frame_options = "ALLOWALL"
|
|
72
|
-
|
|
73
|
-
config.x_content_type_options = "nosniff"
|
|
74
|
-
config.x_xss_protection = "1; mode=block"
|
|
75
|
-
config.referrer_policy = %w(origin-when-cross-origin strict-origin-when-cross-origin)
|
|
76
|
-
|
|
77
|
-
config.csp = {
|
|
78
|
-
default_src: %w('self'),
|
|
79
|
-
script_src: script_src,
|
|
80
|
-
# Certain CSS-in-JS libraries inline the CSS, so we need to use unsafe-inline for them
|
|
81
|
-
style_src: %w('self' 'unsafe-inline' blob: https://fonts.googleapis.com),
|
|
82
|
-
font_src: %w('self' data: https://fonts.gstatic.com),
|
|
83
|
-
connect_src: connect_src,
|
|
84
|
-
}
|
|
50
|
+
rescue ::SecureHeaders::Configuration::AlreadyConfiguredError
|
|
51
|
+
# The App already applied settings
|
|
85
52
|
end
|
|
86
53
|
|
|
87
|
-
SecureHeaders::Configuration.override(:safari_override) do |config|
|
|
54
|
+
::SecureHeaders::Configuration.override(:safari_override) do |config|
|
|
88
55
|
config.cookies = SecureHeaders::OPT_OUT
|
|
89
56
|
end
|
|
90
57
|
|
|
91
|
-
SecureHeaders::Configuration.override(:allow_inline_scripts) do |config|
|
|
58
|
+
::SecureHeaders::Configuration.override(:allow_inline_scripts) do |config|
|
|
92
59
|
config.csp[:script_src] << "'unsafe-inline'"
|
|
93
60
|
end
|
|
94
61
|
end
|
|
95
|
-
|
|
96
62
|
end
|
|
97
63
|
end
|
|
@@ -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
|
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.
|
|
4
|
+
version: 5.0.9
|
|
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-
|
|
13
|
+
date: 2020-09-08 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.
|
|
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.
|
|
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,158 +405,160 @@ executables: []
|
|
|
399
405
|
extensions: []
|
|
400
406
|
extra_rdoc_files: []
|
|
401
407
|
files:
|
|
402
|
-
- Rakefile
|
|
403
|
-
- app/assets/config/coalescing_panda/manifest.js
|
|
404
|
-
- app/assets/images/bootstrap/glyphicons-halflings-white.png
|
|
405
|
-
- app/assets/images/bootstrap/glyphicons-halflings.png
|
|
406
|
-
- app/assets/javascripts/coalescing_panda/application.js
|
|
407
|
-
- app/assets/javascripts/coalescing_panda/canvas_batch.js.coffee
|
|
408
|
-
- app/assets/javascripts/coalescing_panda/oauth2.js.coffee
|
|
409
|
-
- app/assets/stylesheets/coalescing_panda/application.css.scss
|
|
410
|
-
- app/assets/stylesheets/coalescing_panda/launch.css.scss
|
|
411
|
-
- app/assets/stylesheets/coalescing_panda/progress.css.scss
|
|
412
|
-
- app/controllers/coalescing_panda/application_controller.rb
|
|
413
|
-
- app/controllers/coalescing_panda/canvas_batches_controller.rb
|
|
414
|
-
- app/controllers/coalescing_panda/lti_controller.rb
|
|
415
|
-
- app/controllers/coalescing_panda/oauth2_controller.rb
|
|
416
|
-
- app/helpers/coalescing_panda/canvas_batches_helper.rb
|
|
417
|
-
- app/models/coalescing_panda/assignment.rb
|
|
418
408
|
- app/models/coalescing_panda/assignment_group.rb
|
|
419
|
-
- app/models/coalescing_panda/
|
|
420
|
-
- app/models/coalescing_panda/canvas_batch.rb
|
|
421
|
-
- app/models/coalescing_panda/course.rb
|
|
409
|
+
- app/models/coalescing_panda/group_membership.rb
|
|
422
410
|
- app/models/coalescing_panda/enrollment.rb
|
|
411
|
+
- app/models/coalescing_panda/canvas_batch.rb
|
|
412
|
+
- app/models/coalescing_panda/assignment.rb
|
|
423
413
|
- app/models/coalescing_panda/group.rb
|
|
424
|
-
- app/models/coalescing_panda/group_category.rb
|
|
425
|
-
- app/models/coalescing_panda/group_membership.rb
|
|
426
|
-
- app/models/coalescing_panda/json_with_indifferent_access.rb
|
|
427
|
-
- app/models/coalescing_panda/lti_account.rb
|
|
428
|
-
- app/models/coalescing_panda/lti_nonce.rb
|
|
429
|
-
- app/models/coalescing_panda/oauth_state.rb
|
|
430
|
-
- app/models/coalescing_panda/persistent_session.rb
|
|
431
|
-
- app/models/coalescing_panda/section.rb
|
|
432
414
|
- app/models/coalescing_panda/session.rb
|
|
433
|
-
- app/models/coalescing_panda/
|
|
415
|
+
- app/models/coalescing_panda/section.rb
|
|
434
416
|
- app/models/coalescing_panda/term.rb
|
|
435
|
-
- app/models/coalescing_panda/
|
|
417
|
+
- app/models/coalescing_panda/oauth_state.rb
|
|
418
|
+
- app/models/coalescing_panda/submission.rb
|
|
419
|
+
- app/models/coalescing_panda/canvas_api_auth.rb
|
|
436
420
|
- app/models/coalescing_panda/workers/account_miner.rb
|
|
437
|
-
- app/models/coalescing_panda/workers/course_miner.rb
|
|
438
421
|
- app/models/coalescing_panda/workers/provisioning_miner.rb
|
|
422
|
+
- app/models/coalescing_panda/workers/course_miner.rb
|
|
423
|
+
- app/models/coalescing_panda/lti_nonce.rb
|
|
424
|
+
- app/models/coalescing_panda/course.rb
|
|
425
|
+
- app/models/coalescing_panda/persistent_session.rb
|
|
426
|
+
- app/models/coalescing_panda/lti_account.rb
|
|
427
|
+
- app/models/coalescing_panda/json_with_indifferent_access.rb
|
|
428
|
+
- app/models/coalescing_panda/user.rb
|
|
429
|
+
- app/models/coalescing_panda/group_category.rb
|
|
439
430
|
- app/models/concerns/single_table_polymorphic.rb
|
|
440
|
-
- app/
|
|
441
|
-
- app/
|
|
442
|
-
- app/
|
|
443
|
-
- app/
|
|
431
|
+
- app/controllers/coalescing_panda/oauth2_controller.rb
|
|
432
|
+
- app/controllers/coalescing_panda/application_controller.rb
|
|
433
|
+
- app/controllers/coalescing_panda/lti_controller.rb
|
|
434
|
+
- app/controllers/coalescing_panda/canvas_batches_controller.rb
|
|
444
435
|
- app/views/coalescing_panda/oauth2/oauth2.html.haml
|
|
445
436
|
- app/views/coalescing_panda/oauth2/redirect.html.haml
|
|
437
|
+
- app/views/coalescing_panda/launch.html.haml
|
|
446
438
|
- app/views/coalescing_panda/styleguide/styleguide.html
|
|
439
|
+
- app/views/coalescing_panda/lti/iframe_cookie_fix.html.erb
|
|
440
|
+
- app/views/coalescing_panda/canvas_batches/_canvas_batch.html.haml
|
|
441
|
+
- app/views/coalescing_panda/canvas_batches/_canvas_batch_flash.html.haml
|
|
447
442
|
- app/views/layouts/coalescing_panda/application.html.erb
|
|
443
|
+
- app/assets/config/coalescing_panda/manifest.js
|
|
444
|
+
- app/assets/images/bootstrap/glyphicons-halflings.png
|
|
445
|
+
- app/assets/images/bootstrap/glyphicons-halflings-white.png
|
|
446
|
+
- app/assets/javascripts/coalescing_panda/oauth2.js.coffee
|
|
447
|
+
- app/assets/javascripts/coalescing_panda/application.js
|
|
448
|
+
- app/assets/javascripts/coalescing_panda/canvas_batch.js.coffee
|
|
449
|
+
- app/assets/stylesheets/coalescing_panda/progress.css.scss
|
|
450
|
+
- app/assets/stylesheets/coalescing_panda/application.css.scss
|
|
451
|
+
- app/assets/stylesheets/coalescing_panda/launch.css.scss
|
|
452
|
+
- app/helpers/coalescing_panda/canvas_batches_helper.rb
|
|
448
453
|
- config/routes.rb
|
|
449
454
|
- config/styleguide.yml
|
|
450
|
-
- db/migrate/20131114150001_create_coalescing_panda_canvas_api_auths.rb
|
|
451
|
-
- db/migrate/20131118211442_create_coalescing_panda_lti_accounts.rb
|
|
452
|
-
- db/migrate/20131119165343_create_coalescing_panda_lti_nonces.rb
|
|
453
|
-
- db/migrate/20140904223159_create_coalescing_panda_sessions.rb
|
|
454
|
-
- db/migrate/20141119225319_create_coalescing_panda_terms.rb
|
|
455
|
-
- db/migrate/20141119225721_create_coalescing_panda_courses.rb
|
|
456
455
|
- db/migrate/20141120151432_create_coalescing_panda_sections.rb
|
|
457
|
-
- db/migrate/
|
|
458
|
-
- db/migrate/
|
|
456
|
+
- db/migrate/20150602205257_add_option_to_canvas_batches.rb
|
|
457
|
+
- db/migrate/20150811140030_add_fields_to_users.rb
|
|
458
|
+
- db/migrate/20131118211442_create_coalescing_panda_lti_accounts.rb
|
|
459
|
+
- db/migrate/20150506192717_add_assignment_group_id_to_assignments.rb
|
|
460
|
+
- db/migrate/20160830183155_create_coalescing_panda_oauth_states.rb
|
|
459
461
|
- db/migrate/20141120152546_create_coalescing_panda_submissions.rb
|
|
460
|
-
- db/migrate/20141120153135_create_coalescing_panda_enrollments.rb
|
|
461
|
-
- db/migrate/20141121174846_create_coalescing_panda_canvas_batches.rb
|
|
462
|
-
- db/migrate/20141124160857_create_delayed_jobs.rb
|
|
463
462
|
- db/migrate/20141208221740_add_submission_types_to_assignments.rb
|
|
464
|
-
- db/migrate/
|
|
465
|
-
- db/migrate/20150106180131_add_published_to_assignments.rb
|
|
466
|
-
- db/migrate/20150107205405_create_coalescing_panda_groups.rb
|
|
463
|
+
- db/migrate/20150709192717_add_leader_id_to_groups.rb
|
|
467
464
|
- db/migrate/20150107205413_create_coalescing_panda_group_memberships.rb
|
|
465
|
+
- db/migrate/20141120152458_create_coalescing_panda_users.rb
|
|
466
|
+
- db/migrate/20141121174846_create_coalescing_panda_canvas_batches.rb
|
|
467
|
+
- db/migrate/20150708192717_add_group_moderator_to_group_memberships.rb
|
|
468
468
|
- db/migrate/20150210180516_add_context_to_canvas_batch.rb
|
|
469
|
+
- db/migrate/20141120151940_create_coalescing_panda_assignments.rb
|
|
470
|
+
- db/migrate/20140904223159_create_coalescing_panda_sessions.rb
|
|
469
471
|
- db/migrate/20150506183335_create_coalescing_panda_assignment_groups.rb
|
|
470
|
-
- db/migrate/
|
|
472
|
+
- db/migrate/20141120153135_create_coalescing_panda_enrollments.rb
|
|
473
|
+
- db/migrate/20150107205405_create_coalescing_panda_groups.rb
|
|
474
|
+
- db/migrate/20141119225721_create_coalescing_panda_courses.rb
|
|
475
|
+
- db/migrate/20200528224505_create_coalescing_panda_persistent_session.rb
|
|
476
|
+
- db/migrate/20141124160857_create_delayed_jobs.rb
|
|
477
|
+
- db/migrate/20131119165343_create_coalescing_panda_lti_nonces.rb
|
|
478
|
+
- db/migrate/20150106180131_add_published_to_assignments.rb
|
|
471
479
|
- db/migrate/20150526144713_add_account_to_canvas_batches.rb
|
|
472
|
-
- db/migrate/
|
|
473
|
-
- db/migrate/20150708192717_add_group_moderator_to_group_memberships.rb
|
|
474
|
-
- db/migrate/20150709192717_add_leader_id_to_groups.rb
|
|
480
|
+
- db/migrate/20150106175418_add_group_category_id_to_assignment.rb
|
|
475
481
|
- db/migrate/20150714205405_create_coalescing_panda_group_categories.rb
|
|
476
|
-
- db/migrate/20150811140030_add_fields_to_users.rb
|
|
477
482
|
- db/migrate/20151209155923_add_refresh_settings_to_canvas_api_auth.rb
|
|
478
|
-
- db/migrate/
|
|
479
|
-
- db/migrate/
|
|
483
|
+
- db/migrate/20131114150001_create_coalescing_panda_canvas_api_auths.rb
|
|
484
|
+
- db/migrate/20141119225319_create_coalescing_panda_terms.rb
|
|
485
|
+
- lib/tasks/coalescing_panda_tasks.rake
|
|
480
486
|
- lib/coalescing_panda.rb
|
|
481
|
-
- lib/coalescing_panda/bearcat_uri.rb
|
|
482
487
|
- lib/coalescing_panda/controller_helpers.rb
|
|
488
|
+
- lib/coalescing_panda/bearcat_uri.rb
|
|
489
|
+
- lib/coalescing_panda/misc_helper.rb
|
|
483
490
|
- lib/coalescing_panda/engine.rb
|
|
484
|
-
- lib/coalescing_panda/
|
|
491
|
+
- lib/coalescing_panda/secure_headers.rb
|
|
485
492
|
- lib/coalescing_panda/version.rb
|
|
486
|
-
- lib/
|
|
487
|
-
-
|
|
488
|
-
- spec/
|
|
489
|
-
- spec/controllers/coalescing_panda/oauth2_controller_spec.rb
|
|
490
|
-
- spec/dummy/README.rdoc
|
|
491
|
-
- spec/dummy/Rakefile
|
|
492
|
-
- spec/dummy/app/assets/javascripts/application.js
|
|
493
|
-
- spec/dummy/app/assets/stylesheets/application.css
|
|
494
|
-
- spec/dummy/app/controllers/application_controller.rb
|
|
495
|
-
- spec/dummy/app/helpers/application_helper.rb
|
|
493
|
+
- lib/coalescing_panda/route_helpers.rb
|
|
494
|
+
- Rakefile
|
|
495
|
+
- spec/spec_helper.rb
|
|
496
496
|
- spec/dummy/app/models/account.rb
|
|
497
497
|
- spec/dummy/app/models/course.rb
|
|
498
|
+
- spec/dummy/app/controllers/application_controller.rb
|
|
498
499
|
- spec/dummy/app/views/layouts/application.html.erb
|
|
500
|
+
- spec/dummy/app/assets/javascripts/application.js
|
|
501
|
+
- spec/dummy/app/assets/stylesheets/application.css
|
|
502
|
+
- spec/dummy/app/helpers/application_helper.rb
|
|
503
|
+
- spec/dummy/bin/rake
|
|
499
504
|
- spec/dummy/bin/bundle
|
|
500
505
|
- spec/dummy/bin/rails
|
|
501
|
-
- spec/dummy/
|
|
502
|
-
- spec/dummy/config.
|
|
503
|
-
- spec/dummy/config/application.rb
|
|
504
|
-
- spec/dummy/config/boot.rb
|
|
505
|
-
- spec/dummy/config/database.yml
|
|
506
|
-
- spec/dummy/config/environment.rb
|
|
507
|
-
- spec/dummy/config/environments/development.rb
|
|
506
|
+
- spec/dummy/config/routes.rb
|
|
507
|
+
- spec/dummy/config/locales/en.yml
|
|
508
508
|
- spec/dummy/config/environments/production.rb
|
|
509
|
+
- spec/dummy/config/environments/development.rb
|
|
509
510
|
- spec/dummy/config/environments/test.rb
|
|
510
|
-
- spec/dummy/config/
|
|
511
|
-
- spec/dummy/config/
|
|
512
|
-
- spec/dummy/config/
|
|
511
|
+
- spec/dummy/config/environment.rb
|
|
512
|
+
- spec/dummy/config/application.rb
|
|
513
|
+
- spec/dummy/config/database.yml
|
|
514
|
+
- spec/dummy/config/boot.rb
|
|
513
515
|
- spec/dummy/config/initializers/lti_initializer.rb
|
|
516
|
+
- spec/dummy/config/initializers/backtrace_silencers.rb
|
|
514
517
|
- spec/dummy/config/initializers/mime_types.rb
|
|
515
|
-
- spec/dummy/config/initializers/
|
|
518
|
+
- spec/dummy/config/initializers/filter_parameter_logging.rb
|
|
516
519
|
- spec/dummy/config/initializers/session_store.rb
|
|
517
520
|
- spec/dummy/config/initializers/wrap_parameters.rb
|
|
518
|
-
- spec/dummy/config/
|
|
519
|
-
- spec/dummy/config/
|
|
520
|
-
- spec/dummy/
|
|
521
|
-
- spec/dummy/
|
|
521
|
+
- spec/dummy/config/initializers/secret_token.rb
|
|
522
|
+
- spec/dummy/config/initializers/inflections.rb
|
|
523
|
+
- spec/dummy/config.ru
|
|
524
|
+
- spec/dummy/Rakefile
|
|
525
|
+
- spec/dummy/public/favicon.ico
|
|
522
526
|
- spec/dummy/public/422.html
|
|
523
527
|
- spec/dummy/public/500.html
|
|
524
|
-
- spec/dummy/public/
|
|
525
|
-
- spec/
|
|
528
|
+
- spec/dummy/public/404.html
|
|
529
|
+
- spec/dummy/db/schema.rb
|
|
530
|
+
- spec/dummy/README.rdoc
|
|
531
|
+
- spec/models/coalescing_panda/enrollment_spec.rb
|
|
532
|
+
- spec/models/coalescing_panda/section_spec.rb
|
|
533
|
+
- spec/models/coalescing_panda/lti_nonce_spec.rb
|
|
534
|
+
- spec/models/coalescing_panda/lti_account_spec.rb
|
|
535
|
+
- spec/models/coalescing_panda/canvas_batch_spec.rb
|
|
536
|
+
- spec/models/coalescing_panda/term_spec.rb
|
|
537
|
+
- spec/models/coalescing_panda/assignment_spec.rb
|
|
538
|
+
- spec/models/coalescing_panda/submission_spec.rb
|
|
539
|
+
- spec/models/coalescing_panda/assignment_group_spec.rb
|
|
540
|
+
- spec/models/coalescing_panda/group_spec.rb
|
|
541
|
+
- spec/models/coalescing_panda/workers/account_miner_spec.rb
|
|
542
|
+
- spec/models/coalescing_panda/workers/course_miner_spec.rb
|
|
543
|
+
- spec/models/coalescing_panda/canvas_api_auth_spec.rb
|
|
544
|
+
- spec/models/coalescing_panda/group_membership_spec.rb
|
|
545
|
+
- spec/models/coalescing_panda/user_spec.rb
|
|
546
|
+
- spec/models/coalescing_panda/course_spec.rb
|
|
547
|
+
- spec/factories/courses.rb
|
|
548
|
+
- spec/factories/submissions.rb
|
|
526
549
|
- spec/factories/assignment_groups.rb
|
|
527
550
|
- spec/factories/assignments.rb
|
|
528
551
|
- spec/factories/canvas_api_auths.rb
|
|
529
|
-
- spec/factories/canvas_batches.rb
|
|
530
|
-
- spec/factories/courses.rb
|
|
531
552
|
- spec/factories/enrollments.rb
|
|
553
|
+
- spec/factories/canvas_batches.rb
|
|
532
554
|
- spec/factories/sections.rb
|
|
533
|
-
- spec/factories/
|
|
534
|
-
- spec/factories/terms.rb
|
|
555
|
+
- spec/factories/accounts.rb
|
|
535
556
|
- spec/factories/users.rb
|
|
536
|
-
- spec/
|
|
537
|
-
- spec/
|
|
538
|
-
- spec/
|
|
539
|
-
- spec/
|
|
540
|
-
- spec/models/coalescing_panda/course_spec.rb
|
|
541
|
-
- spec/models/coalescing_panda/enrollment_spec.rb
|
|
542
|
-
- spec/models/coalescing_panda/group_membership_spec.rb
|
|
543
|
-
- spec/models/coalescing_panda/group_spec.rb
|
|
544
|
-
- spec/models/coalescing_panda/lti_account_spec.rb
|
|
545
|
-
- spec/models/coalescing_panda/lti_nonce_spec.rb
|
|
546
|
-
- spec/models/coalescing_panda/section_spec.rb
|
|
547
|
-
- spec/models/coalescing_panda/submission_spec.rb
|
|
548
|
-
- spec/models/coalescing_panda/term_spec.rb
|
|
549
|
-
- spec/models/coalescing_panda/user_spec.rb
|
|
550
|
-
- spec/models/coalescing_panda/workers/account_miner_spec.rb
|
|
551
|
-
- spec/models/coalescing_panda/workers/course_miner_spec.rb
|
|
557
|
+
- spec/factories/terms.rb
|
|
558
|
+
- spec/controllers/coalescing_panda/canvas_batches_controller_spec.rb
|
|
559
|
+
- spec/controllers/coalescing_panda/oauth2_controller_spec.rb
|
|
560
|
+
- spec/controllers/coalescing_panda/lti_controller_spec.rb
|
|
552
561
|
- spec/rails_helper.rb
|
|
553
|
-
- spec/spec_helper.rb
|
|
554
562
|
homepage: http://www.instructure.com
|
|
555
563
|
licenses: []
|
|
556
564
|
metadata: {}
|
|
@@ -560,16 +568,17 @@ require_paths:
|
|
|
560
568
|
- lib
|
|
561
569
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
562
570
|
requirements:
|
|
563
|
-
- -
|
|
571
|
+
- - '>='
|
|
564
572
|
- !ruby/object:Gem::Version
|
|
565
573
|
version: '0'
|
|
566
574
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
567
575
|
requirements:
|
|
568
|
-
- -
|
|
576
|
+
- - '>='
|
|
569
577
|
- !ruby/object:Gem::Version
|
|
570
578
|
version: '0'
|
|
571
579
|
requirements: []
|
|
572
|
-
|
|
580
|
+
rubyforge_project:
|
|
581
|
+
rubygems_version: 2.0.14
|
|
573
582
|
signing_key:
|
|
574
583
|
specification_version: 4
|
|
575
584
|
summary: Canvas LTI and OAUTH2 mountable engine
|