From 727ee97a3f40f6b6d40546d1417f3a936692b755 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Sun, 17 Jun 2018 11:33:04 +0100 Subject: [PATCH] Allow inline javascript and CSS in better_errors pages --- .rubocop.yml | 1 + app/controllers/application_controller.rb | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/.rubocop.yml b/.rubocop.yml index fc2b5cd85..e12437e08 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -9,6 +9,7 @@ Layout/ExtraSpacing: Lint/PercentStringArray: Exclude: - 'config/initializers/secure_headers.rb' + - 'app/controllers/application_controller.rb' - 'app/controllers/site_controller.rb' Naming/FileName: diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 3afb17f47..db4ae9ad3 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -4,6 +4,7 @@ class ApplicationController < ActionController::Base protect_from_forgery :with => :exception before_action :fetch_body + around_action :better_errors_allow_inline, :if => proc { Rails.env.development? } attr_accessor :current_user helper_method :current_user @@ -455,6 +456,17 @@ class ApplicationController < ActionController::Base end end + def better_errors_allow_inline + yield + rescue StandardError + append_content_security_policy_directives( + :script_src => %w['unsafe-inline'], + :style_src => %w['unsafe-inline'] + ) + + raise + end + private # extract authorisation credentials from headers, returns user = nil if none -- 2.43.2