Hide system actor from user list and block show/edit
Index: filter out SystemActor.system_user_email() in query. Show/Form: redirect to /users with flash when viewing or editing system actor user. Index format_error: handle Ash errors without :message field.
This commit is contained in:
parent
b7f37c80bd
commit
8ad5201e1a
3 changed files with 47 additions and 9 deletions
|
|
@ -25,10 +25,17 @@ defmodule MvWeb.UserLive.Index do
|
|||
|
||||
import MvWeb.LiveHelpers, only: [current_actor: 1]
|
||||
|
||||
require Ash.Query
|
||||
|
||||
@impl true
|
||||
def mount(_params, _session, socket) do
|
||||
actor = current_actor(socket)
|
||||
users = Ash.read!(Mv.Accounts.User, domain: Mv.Accounts, load: [:member], actor: actor)
|
||||
|
||||
users =
|
||||
Mv.Accounts.User
|
||||
|> Ash.Query.filter(email != ^Mv.Helpers.SystemActor.system_user_email())
|
||||
|> Ash.read!(domain: Mv.Accounts, load: [:member], actor: actor)
|
||||
|
||||
sorted = Enum.sort_by(users, & &1.email)
|
||||
|
||||
{:ok,
|
||||
|
|
@ -138,8 +145,11 @@ defmodule MvWeb.UserLive.Index do
|
|||
defp sort_fun(:asc), do: &<=/2
|
||||
defp sort_fun(:desc), do: &>=/2
|
||||
|
||||
defp format_error(%Ash.Error.Invalid{errors: errors}) do
|
||||
Enum.map_join(errors, ", ", fn %{message: message} -> message end)
|
||||
defp format_error(%Ash.Error.Invalid{errors: errors}) when is_list(errors) do
|
||||
Enum.map_join(errors, ", ", fn
|
||||
%{message: message} when is_binary(message) -> message
|
||||
other -> inspect(other)
|
||||
end)
|
||||
end
|
||||
|
||||
defp format_error(error) do
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue