Files

27 lines
537 B
Elixir

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