Skip to content

Commit

Permalink
consider camelcase parameters set in config.filter_parameters
Browse files Browse the repository at this point in the history
  • Loading branch information
ma2gedev committed Nov 27, 2014
1 parent 8eeeea9 commit 732793d
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 13 deletions.
22 changes: 12 additions & 10 deletions lib/phoenix/plugs/controller_logger.ex
Expand Up @@ -22,29 +22,31 @@ defmodule Phoenix.Plugs.ControllerLogger do
Logger.debug fn ->
module = conn |> controller_module |> inspect
action = conn |> action_name |> Atom.to_string
filtered_parameters = conn.params |> filter_parameters
filter_params =
Application.get_env(:phoenix, :filter_parameters)
|> Enum.map(&String.downcase(&1))
filtered_parameters = conn.params |> filter_parameters(filter_params)

["Processing by ", module, ?., action, ?/, ?2, ?\n,
" Parameters: ", inspect(filtered_parameters)]
end
conn
end

defp filter_parameters(params) do
filter_parameters = Application.get_env(:phoenix, :filter_parameters)
defp filter_parameters(params, filter_params) do
Enum.into params, %{}, fn {k, v} ->
if String.contains?(String.downcase(k), filter_parameters) do
if String.contains?(String.downcase(k), filter_params) do
{k, "FILTERED"}
else
{k, filter_values(v)}
{k, filter_values(v, filter_params)}
end
end
end

defp filter_values(%{} = map),
do: filter_parameters(map)
defp filter_values([_|_] = list),
do: Enum.map(list, fn (item) -> if is_map(item), do: filter_parameters(item), else: item end)
defp filter_values(other),
defp filter_values(%{} = map, filter_params),
do: filter_parameters(map, filter_params)
defp filter_values([_|_] = list, filter_params),
do: Enum.map(list, fn (item) -> if is_map(item), do: filter_parameters(item, filter_params), else: item end)
defp filter_values(other, _filter_params),
do: other
end
6 changes: 3 additions & 3 deletions test/phoenix/plugs/controller_logger_test.exs
Expand Up @@ -17,11 +17,11 @@ defmodule Phoenix.ControllerLoggerTest do
test "filter parameter" do
filter_parameters = Application.get_env(:phoenix, :filter_parameters)
try do
Application.put_env(:phoenix, :filter_parameters, filter_parameters ++ ["secret"])
Application.put_env(:phoenix, :filter_parameters, filter_parameters ++ ["Secret"])
{_conn, [_, parameters]} = call_controller_with_params(
password: "should_not_be_show", secret: "should_not_be_show"
password: "should_not_be_show", Secret: "should_not_be_show"
)
assert parameters =~ "Parameters: %{\"password\" => \"FILTERED\", \"secret\" => \"FILTERED\"}"
assert parameters =~ "Parameters: %{\"Secret\" => \"FILTERED\", \"password\" => \"FILTERED\"}"
after
Application.put_env(:phoenix, :filter_parameters, filter_parameters)
end
Expand Down

0 comments on commit 732793d

Please sign in to comment.