Creating user via API give correct responses if the user already exists or the mail address is malformed.

This commit is contained in:
2026-02-18 10:47:37 +01:00
parent 601e08220d
commit 6c41f69723
2 changed files with 58 additions and 5 deletions

View File

@ -15,10 +15,31 @@ defmodule BeetRoundServerWeb.UserJSON do
%{data: data(user)}
end
def show(%{changeset: changeset}) do
# When encoded, the changeset returns its errors
# as a JSON object. So we just pass it forward.
%{errors: Ecto.Changeset.traverse_errors(changeset, &translate_error/1)}
end
defp data(%User{} = user) do
%{
id: user.id,
email: user.email
}
end
defp translate_error({msg, opts}) do
# You can make use of gettext to translate error messages by
# uncommenting and adjusting the following code:
# if count = opts[:count] do
# Gettext.dngettext(BeetRoundServerWeb.Gettext, "errors", msg, msg, count, opts)
# else
# Gettext.dgettext(BeetRoundServerWeb.Gettext, "errors", msg, opts)
# end
Enum.reduce(opts, msg, fn {key, value}, acc ->
String.replace(acc, "%{#{key}}", fn _ -> to_string(value) end)
end)
end
end