coalescing_panda 5.0.4 → 5.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/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/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 +6 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 92bed66c0757318a64fada41a45e598216c1daefdd7b43c8adf0a58c9d5259af
|
4
|
+
data.tar.gz: d99684f401684ffdcb93ae63fe7ea49ba6ae4303db2e68ac43709e934b31ebeb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8d1289c6a483a650b1e54a669ad2968cd1d3935e4ef3a67de130775cacfeab78a810ab7a736edb7b5a63b1960633f98fb8d813ceb0e3b6dd1e59d50448fa9697
|
7
|
+
data.tar.gz: a8b9d22ffc7262a1385e156915e382ef43bc0d3e68d9077032676c92b9e9dd466084289c143079e977ee20d82e7259a05496ed452798aaf3ae3306f9efe006b7
|
@@ -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
|
@@ -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.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nathan Mills
|
@@ -10,20 +10,20 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2020-
|
13
|
+
date: 2020-08-18 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
|
@@ -487,7 +487,9 @@ files:
|
|
487
487
|
- lib/coalescing_panda/bearcat_uri.rb
|
488
488
|
- lib/coalescing_panda/controller_helpers.rb
|
489
489
|
- lib/coalescing_panda/engine.rb
|
490
|
+
- lib/coalescing_panda/misc_helper.rb
|
490
491
|
- lib/coalescing_panda/route_helpers.rb
|
492
|
+
- lib/coalescing_panda/secure_headers.rb
|
491
493
|
- lib/coalescing_panda/version.rb
|
492
494
|
- lib/tasks/coalescing_panda_tasks.rake
|
493
495
|
- spec/controllers/coalescing_panda/canvas_batches_controller_spec.rb
|