Add a Content Security Policy
This commit is contained in:
40
config/initializers/sentry_csp.rb
Normal file
40
config/initializers/sentry_csp.rb
Normal file
@@ -0,0 +1,40 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require_relative 'sentry'
|
||||
|
||||
class SentryCsp
|
||||
def self.active?
|
||||
dsn.present? && %w[development test].exclude?(environment)
|
||||
end
|
||||
|
||||
def self.report_url
|
||||
parsed_url = URI.parse dsn
|
||||
|
||||
# Add additional variables to the query string
|
||||
query_params = CGI.parse(parsed_url.query || '')
|
||||
query_params[:sentry_release] = release if release
|
||||
query_params[:sentry_environment] = environment if environment
|
||||
|
||||
# Add the query string back to the URL
|
||||
parsed_url.query = URI.encode_www_form(query_params)
|
||||
|
||||
# Return the full URL
|
||||
parsed_url.to_s
|
||||
end
|
||||
|
||||
class << self
|
||||
private
|
||||
|
||||
def dsn
|
||||
ENV.fetch('SENTRY_CSP_REPORT_URL', nil)
|
||||
end
|
||||
|
||||
def release
|
||||
Sentry.configuration.release
|
||||
end
|
||||
|
||||
def environment
|
||||
Sentry.configuration.environment
|
||||
end
|
||||
end
|
||||
end
|
Reference in New Issue
Block a user