ezcontainer_example/lib/ezcontainer_railway_web/plugs/anon_session.ex

24 lines
497 B
Elixir
Raw Normal View History

2023-10-25 03:58:10 -04:00
defmodule EzcontainerRailwayWeb.AnonSession do
import Plug.Conn
def init(default), do: default
def call(conn, _opts) do
case get_session(conn, :anon_id) do
nil ->
anon_id = generate_anon_id()
conn
|> put_session(:anon_id, anon_id)
|> assign(:anon_id, anon_id)
id ->
conn |> assign(:anon_id, id)
end
end
defp generate_anon_id() do
:crypto.strong_rand_bytes(16)
|> Base.encode64()
|> binary_part(0, 16)
end
end