ash_hq/lib/ash_hq_web/plugs/session_plug.ex

27 lines
639 B
Elixir
Raw Normal View History

2022-03-26 10:17:01 +13:00
defmodule AshHqWeb.SessionPlug do
@moduledoc false
@behaviour Plug
@cookies_to_replicate [
2022-03-28 10:26:35 +13:00
"theme",
2022-03-30 17:40:17 +13:00
"selected_versions",
2023-02-01 05:13:42 +13:00
"selected_types",
"catalogue_call_to_action_dismissed"
2022-03-26 10:17:01 +13:00
]
def init(_), do: []
def call(conn, _) do
Enum.reduce(@cookies_to_replicate, conn, fn cookie, conn ->
case conn.req_cookies[cookie] do
value when value in [nil, "", "null"] ->
Plug.Conn.put_session(conn, cookie, nil)
value ->
Plug.Conn.put_session(conn, cookie, value)
2022-03-26 10:17:01 +13:00
end
end)
|> Plug.Conn.assign(:configured_theme, conn.assigns[:configured_theme] || "dark")
2022-03-26 10:17:01 +13:00
end
end