mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Merge pull request #34894 from hahmed/tames-params-wrapper-errors
Capture parsing errors only for ActionController::ParamsWrapper#process_actions
This commit is contained in:
commit
ee3ebc9098
1 changed files with 17 additions and 16 deletions
|
@ -241,22 +241,8 @@ module ActionController
|
||||||
# Performs parameters wrapping upon the request. Called automatically
|
# Performs parameters wrapping upon the request. Called automatically
|
||||||
# by the metal call stack.
|
# by the metal call stack.
|
||||||
def process_action(*args)
|
def process_action(*args)
|
||||||
if _wrapper_enabled?
|
_perform_parameter_wrapping if _wrapper_enabled?
|
||||||
wrapped_hash = _wrap_parameters request.request_parameters
|
super
|
||||||
wrapped_keys = request.request_parameters.keys
|
|
||||||
wrapped_filtered_hash = _wrap_parameters request.filtered_parameters.slice(*wrapped_keys)
|
|
||||||
|
|
||||||
# This will make the wrapped hash accessible from controller and view.
|
|
||||||
request.parameters.merge! wrapped_hash
|
|
||||||
request.request_parameters.merge! wrapped_hash
|
|
||||||
|
|
||||||
# This will display the wrapped hash in the log file.
|
|
||||||
request.filtered_parameters.merge! wrapped_filtered_hash
|
|
||||||
end
|
|
||||||
ensure
|
|
||||||
# NOTE: Rescues all exceptions so they
|
|
||||||
# may be caught in ActionController::Rescue.
|
|
||||||
return super
|
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
@ -292,5 +278,20 @@ module ActionController
|
||||||
ref = request.content_mime_type.ref
|
ref = request.content_mime_type.ref
|
||||||
_wrapper_formats.include?(ref) && _wrapper_key && !request.parameters.key?(_wrapper_key)
|
_wrapper_formats.include?(ref) && _wrapper_key && !request.parameters.key?(_wrapper_key)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def _perform_parameter_wrapping
|
||||||
|
wrapped_hash = _wrap_parameters request.request_parameters
|
||||||
|
wrapped_keys = request.request_parameters.keys
|
||||||
|
wrapped_filtered_hash = _wrap_parameters request.filtered_parameters.slice(*wrapped_keys)
|
||||||
|
|
||||||
|
# This will make the wrapped hash accessible from controller and view.
|
||||||
|
request.parameters.merge! wrapped_hash
|
||||||
|
request.request_parameters.merge! wrapped_hash
|
||||||
|
|
||||||
|
# This will display the wrapped hash in the log file.
|
||||||
|
request.filtered_parameters.merge! wrapped_filtered_hash
|
||||||
|
rescue ActionDispatch::Http::Parameters::ParseError
|
||||||
|
# swallow parse error exception
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue