23 lines
497 B
Elixir
23 lines
497 B
Elixir
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
|