Skip to content

Commit 4fb9662

Browse files
committed
Move override application logic to configuration class
While the normal expected use case for an override is to apply it to a request, there are uses cases where we might want to apply an override to a non-request context. For example, we have a script that runs outside of the main rails app to generate some static configs we copy/paste into some static files. It would look something like this: ``` _, static_csp_policy = SecureHeaders::CSP.make_header(SecureHeaders::Configuration.get.apply_overrides(:static_file_policy).csp, nil) ... %q(<meta http-equiv="Content-Security-Policy" content="#{static_csp+policy"}) ```
1 parent 6ac2f46 commit 4fb9662

File tree

2 files changed

+15
-7
lines changed

2 files changed

+15
-7
lines changed

lib/secure_headers.rb

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -165,13 +165,9 @@ def header_hash_for(request)
165165
#
166166
# name - the name of the previously configured override.
167167
def use_secure_headers_override(request, name)
168-
if override = Configuration.overrides(name)
169-
config = config_for(request)
170-
config.instance_eval(&override)
171-
override_secure_headers_request_config(request, config)
172-
else
173-
raise ArgumentError.new("no override by the name of #{name} has been configured")
174-
end
168+
config = config_for(request)
169+
config.apply_override(name)
170+
override_secure_headers_request_config(request, config)
175171
end
176172

177173
# Public: gets or creates a nonce for CSP.

lib/secure_headers/configuration.rb

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,18 @@ def dup
167167
copy
168168
end
169169

170+
# Public: Apply a named override to the current config
171+
#
172+
# Returns self
173+
def apply_override(name)
174+
if override = self.class.overrides(name)
175+
instance_eval(&override)
176+
else
177+
raise ArgumentError.new("no override by the name of #{name} has been configured")
178+
end
179+
self
180+
end
181+
170182
def generate_headers(user_agent)
171183
headers = {}
172184
HEADERABLE_ATTRIBUTES.each do |attr|

0 commit comments

Comments
 (0)