AttestoPhoenix.Schema.LogoutSession (AttestoPhoenix v1.1.0)

Copy Markdown View Source

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

t()

@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

from_record(record, opts \\ [])

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).

to_target(row)

@spec to_target(t()) :: Attesto.LogoutSessionStore.target()

Fold a loaded row into the Attesto.LogoutSessionStore.target() shape.