One signed-in session, as every backend reports it.
The client holds only the session's token; the backend stores no more
than a hash of it. An open LiveView holds the session's id, never its
token, and re-checks it by id.
second_factor_passed is false between a password and a second factor;
completed_steps lists the steps the session has finished
(Macaw.Auth.pending_step/2).
Summary
Types
@type t() :: %Macaw.Auth.Session{ completed_steps: [Macaw.Auth.step()], created_at: DateTime.t() | nil, id: term(), last_used_at: DateTime.t() | nil, remote_ip: String.t() | nil, second_factor_passed: boolean(), user_agent: String.t() | nil, user_id: term() }