Shared admin step-up workflow for destructive LiveView actions.
The service keeps a per-LiveView grace window in assigns, delegates the
actual challenge/verification work to Accrue.Auth, and records
admin.step_up.* audit rows through the core event ledger.
Summary
Types
@type continuation() :: (Phoenix.LiveView.Socket.t() -> Phoenix.LiveView.Socket.t())
Functions
@spec fresh?( Phoenix.LiveView.Socket.t(), keyword() ) :: boolean()
@spec require_fresh(Phoenix.LiveView.Socket.t(), map(), continuation(), keyword()) :: {:ok, Phoenix.LiveView.Socket.t()} | {:challenge, Phoenix.LiveView.Socket.t()} | {:error, term(), Phoenix.LiveView.Socket.t()}
@spec verify(Phoenix.LiveView.Socket.t(), map(), keyword()) :: {:ok, Phoenix.LiveView.Socket.t()} | {:error, term(), Phoenix.LiveView.Socket.t()}