環境
- rails (5.2.3)
- graphql-ruby (1.9.3)
前置き
Rails.application.config.filter_parameters += [/password/, :query]
とかにすれば隠せるのですが、queryが全て[FILTERED]になってしまうのも悲しい
これが
Parameters: {"query"=>"mutation { updateUserPassword(input: { id: \"1\", password: \"password\", passwordConfirmation: \"password\" }) { errors } }}"
こうなっちゃう
Parameters: {"query"=>[FILTERED]}
対処する
filter_parametersはlambdaを許容しているらしいのでqueryパラメータのときは自前で置換をすることにする
config/initializers/filter_parameter_logging.rb
graphqlQueryFilter = lambda do |k,v|
return unless k.to_sym == :query
v.replace v.gsub(/(password[a-zA-Z_]*:) \"([^\"]*)\"/) {
"#{$1} \"#{ActionDispatch::Http::ParameterFilter::FILTERED}\""
}
end
Rails.application.config.filter_parameters += [/password/, graphqlQueryFilter]
これでこんなかんじになりました
Parameters: {"query"=>"mutation { updateUserPassword(input: { id: \"1\", password: \"[FILTERED]\", passwordConfirmation: \"[FILTERED]\" }) { errors } }}"
ちなみに今回はclientのクエリを自前で生成していて文字列はダブルクオーテーションで囲むようにしているのでこれでOKでした、
ご自身の環境にあわせて正規表現部分に手を加えてください