defmodule CMSWeb.AdminMode do
  @moduledoc false
  use CMSWeb, :live_view

  def admin_mode(%Plug.Conn{} = conn, _opts) do
    Plug.Conn.assign(conn, :admin?, admin?(conn))
  end

  def on_mount(:default, _params, session, socket) do
    {:cont, assign(socket, :admin?, admin?(session))}
  end

  defp admin?(%Plug.Conn{} = conn) do
    Plug.Conn.get_session(conn, :admin?, false) == true
  end

  defp admin?(%{} = session), do: Map.get(session, :admin?, false) == true
end