lib/plugs/set_session_storage.ex
defmodule AuthN.Plugs.SetSessionStorage do
  @moduledoc ~S"""
  This plug allows to change the storage mechanism for sessions.
  By default, the session is stored into a signed cookie.
  """
  def init(opts), do: opts
  def call(conn, opts) do
    Plug.Conn.put_private(
      conn,
      :session_storage,
      Keyword.fetch!(opts, :session_storage)
    )
  end
end