defmodule PlausibleWeb.ControllerHelpers do @moduledoc false import Plug.Conn import Phoenix.Controller def render_error(conn, status, message) do conn |> put_root_layout(false) |> put_status(status) |> put_view(PlausibleWeb.ErrorView) |> render("#{status}.html", message: message, layout: error_layout()) end def render_error(conn, status) do conn |> put_root_layout(false) |> put_status(status) |> put_view(PlausibleWeb.ErrorView) |> render("#{status}.html", layout: error_layout()) end defp error_layout, do: Application.get_env(:plausible, PlausibleWeb.Endpoint)[:render_errors][:layout] @auth_layout_assigns [ layout: {PlausibleWeb.LayoutView, :auth}, hide_header?: true, hide_footer?: true, disable_global_notices?: true ] def render_auth_page(conn, template, extra_assigns \\ []) do render(conn, template, Keyword.merge(@auth_layout_assigns, extra_assigns)) end def debug_metadata(conn) do %{ request_method: conn.method, request_path: conn.request_path, params: conn.params, phoenix_controller: conn.private.phoenix_controller |> to_string(), phoenix_action: conn.private.phoenix_action |> to_string(), site_id: conn.assigns.site.id, site_domain: conn.assigns.site.domain, user_id: get_user_id(conn, conn.assigns), team_id: get_team_id(conn, conn.assigns) } end defp get_user_id(_conn, %{current_user: user}), do: user.id defp get_user_id(conn, _assigns) do case PlausibleWeb.UserAuth.get_user_session(conn) do {:ok, user_session} -> user_session.user_id _ -> nil end end defp get_team_id(_conn, %{current_team: %Plausible.Teams.Team{id: id}}), do: id defp get_team_id(_conn, %{site_team: %Plausible.Teams.Team{id: id}}), do: id defp get_team_id(_conn, %{api_context: :site, site: %Plausible.Site{team_id: id}}), do: id defp get_team_id(_conn, _assigns), do: nil end