Ecto schema + record bridge for the logout session store
(AttestoPhoenix.Store.EctoLogoutSessionStore).
Backs Attesto.LogoutSessionStore: one row per (session, Relying Party)
pair, recording where to notify the RP when the session ends — the
backchannel_logout_uri a logout_token is POSTed to (Back-Channel Logout
1.0) and/or the frontchannel_logout_uri the logout page renders in an
iframe (Front-Channel Logout 1.0). A row is written at ID-Token mint and
read/deleted by the end-session endpoint; it carries at least one of the two
URIs.
This is the OP-side delivery map, not the browser login session — see
Attesto.LogoutSessionStore.
Summary
Functions
Build the insert changeset for a logout session from the core store record. Fail-closed: a missing required field is rejected, not defaulted, and a record carrying neither logout URI is rejected (there would be no way to notify the RP).
Fold a loaded row into the Attesto.LogoutSessionStore.target() shape.
Types
@type t() :: %AttestoPhoenix.Schema.LogoutSession{ __meta__: term(), backchannel_logout_uri: term(), client_id: term(), expires_at: term(), frontchannel_logout_uri: term(), frontchannel_session_required: term(), id: term(), inserted_at: term(), session_required: term(), sid: term(), subject: term() }
Functions
@spec from_record( Attesto.LogoutSessionStore.entry(), keyword() ) :: Ecto.Changeset.t()
Build the insert changeset for a logout session from the core store record. Fail-closed: a missing required field is rejected, not defaulted, and a record carrying neither logout URI is rejected (there would be no way to notify the RP).
@spec to_target(t()) :: Attesto.LogoutSessionStore.target()
Fold a loaded row into the Attesto.LogoutSessionStore.target() shape.