refactor: add opts_with_actor helper and improve error formatting
Add opts_with_actor helper function to reduce duplication when building Ash options with actor and domain. Improve format_error documentation and ensure consistent error message formatting.
This commit is contained in:
parent
34afe798ec
commit
5ac9ab7ff9
4 changed files with 26 additions and 9 deletions
|
|
@ -6,6 +6,7 @@ defmodule MvWeb.RoleLive.Helpers do
|
|||
|
||||
@doc """
|
||||
Formats an error for display to the user.
|
||||
Extracts error messages from Ash.Error.Invalid and joins them.
|
||||
"""
|
||||
@spec format_error(Ash.Error.Invalid.t() | String.t() | any()) :: String.t()
|
||||
def format_error(%Ash.Error.Invalid{} = error) do
|
||||
|
|
@ -24,4 +25,20 @@ defmodule MvWeb.RoleLive.Helpers do
|
|||
def permission_set_badge_class("normal_user"), do: "badge badge-success badge-sm"
|
||||
def permission_set_badge_class("admin"), do: "badge badge-error badge-sm"
|
||||
def permission_set_badge_class(_), do: "badge badge-ghost badge-sm"
|
||||
|
||||
@doc """
|
||||
Builds Ash options with actor and domain, ensuring actor is never nil in real paths.
|
||||
"""
|
||||
@spec opts_with_actor(keyword(), map() | nil, atom()) :: keyword()
|
||||
def opts_with_actor(base_opts \\ [], actor, domain) do
|
||||
opts = Keyword.put(base_opts, :domain, domain)
|
||||
|
||||
if actor do
|
||||
Keyword.put(opts, :actor, actor)
|
||||
else
|
||||
require Logger
|
||||
Logger.warning("opts_with_actor called with nil actor - this may bypass policies")
|
||||
opts
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue