defmodule DexiWeb.SessionIdPlug do @moduledoc false import Plug.Conn @session_id_bytes 24 def init(opts), do: opts def call(conn, _opts) do case get_session(conn, :session_id) do nil -> session_id = @session_id_bytes |> :crypto.strong_rand_bytes() |> Base.url_encode64(padding: false) conn |> put_session(:session_id, session_id) |> assign(:session_id, session_id) session_id -> assign(conn, :session_id, session_id) end end end