Member Resource Policies closes #345 #346

Merged
moritz merged 33 commits from feature/345_member_policies_2 into main 2026-01-13 16:36:24 +01:00
Showing only changes of commit 89fbd55250 - Show all commits

View file

@ -598,20 +598,25 @@ defmodule MvWeb.UserLive.Form do
actor = current_actor(socket) actor = current_actor(socket)
case Ash.read(query, domain: Mv.Membership, actor: actor) do # Early return if no actor (prevents exceptions in unauthenticated tests)
{:ok, members} -> if is_nil(actor) do
# Apply email match filter if user_email is provided []
if user_email_str do else
Mv.Membership.Member.filter_by_email_match(members, user_email_str) case Ash.read(query, domain: Mv.Membership, actor: actor) do
else {:ok, members} -> apply_email_filter(members, user_email_str)
members {:error, _} -> []
end end
{:error, _} ->
[]
end end
end end
@spec apply_email_filter([Mv.Membership.Member.t()], String.t() | nil) ::
[Mv.Membership.Member.t()]
defp apply_email_filter(members, nil), do: members
defp apply_email_filter(members, user_email_str) when is_binary(user_email_str) do
Mv.Membership.Member.filter_by_email_match(members, user_email_str)
end
# Extract user-friendly error message from Ash.Error # Extract user-friendly error message from Ash.Error
@spec extract_error_message(any()) :: String.t() @spec extract_error_message(any()) :: String.t()
defp extract_error_message(%Ash.Error.Invalid{errors: errors}) when is_list(errors) do defp extract_error_message(%Ash.Error.Invalid{errors: errors}) when is_list(errors) do