Fix error on user update form

This commit is contained in:
byte[] 2021-12-19 11:54:21 -05:00
parent 4e7d1988ee
commit 14cfb3b06e
4 changed files with 15 additions and 7 deletions

View file

@ -518,6 +518,10 @@ defmodule Philomena.Users do
unsubscribe_restricted_actors(user) unsubscribe_restricted_actors(user)
end) end)
|> Repo.transaction() |> Repo.transaction()
|> case do
{:ok, %{user: user}} -> {:ok, user}
{:error, :user, changeset, _} -> {:error, changeset}
end
end end
defp clean_roles(nil), do: [] defp clean_roles(nil), do: []

View file

@ -15,7 +15,7 @@ defmodule PhilomenaWeb.Admin.UserController do
id_field: "slug", id_field: "slug",
preload: [:roles] preload: [:roles]
plug :load_roles when action in [:edit] plug :load_roles when action in [:edit, :update]
def index(conn, %{"q" => q}) do def index(conn, %{"q" => q}) do
User User
@ -62,10 +62,10 @@ defmodule PhilomenaWeb.Admin.UserController do
{:ok, user} -> {:ok, user} ->
conn conn
|> put_flash(:info, "User successfully updated.") |> put_flash(:info, "User successfully updated.")
|> moderation_log(details: &log_details/3, data: user.user) |> moderation_log(details: &log_details/3, data: user)
|> redirect(to: Routes.profile_path(conn, :show, conn.assigns.user)) |> redirect(to: Routes.profile_path(conn, :show, user))
{:error, %{user: changeset}} -> {:error, changeset} ->
render(conn, "edit.html", changeset: changeset) render(conn, "edit.html", changeset: changeset)
end end
end end

View file

@ -8,10 +8,14 @@
span.block__header__title Essential user details span.block__header__title Essential user details
label.table-list__label label.table-list__label
.table-list__label__text Name: .table-list__label__text Name:
.table-list__label__input = text_input f, :name, class: "input" .table-list__label__input
= error_tag f, :name
= text_input f, :name, class: "input"
label.table-list__label label.table-list__label
.table-list__label__text Email: .table-list__label__text Email:
.table-list__label__input = text_input f, :email, class: "input" .table-list__label__input
= error_tag f, :email
= text_input f, :email, class: "input"
label.table-list__label label.table-list__label
.table-list__label__text Role: .table-list__label__text Role:
.table-list__label__input = select f, :role, ["user", "assistant", "moderator", "admin"], class: "input" .table-list__label__input = select f, :role, ["user", "assistant", "moderator", "admin"], class: "input"

View file

@ -26,7 +26,7 @@ defmodule PhilomenaWeb.Admin.UserView do
id: input_id, id: input_id,
checked_value: to_string(role.id), checked_value: to_string(role.id),
hidden_input: false, hidden_input: false,
checked: Enum.member?(Enum.map(input_value(form, field), & &1.id), role.id) checked: Enum.member?(Enum.map(Map.get(form.data, field), & &1.id), role.id)
) )
content_tag(:li, class: "table-list__label") do content_tag(:li, class: "table-list__label") do