44 lines
1.2 KiB
Elixir
44 lines
1.2 KiB
Elixir
defmodule PlausibleWeb.ControllerHelpers do
|
|
import Plug.Conn
|
|
import Phoenix.Controller
|
|
|
|
def render_error(conn, status, message) do
|
|
conn
|
|
|> put_status(status)
|
|
|> put_view(PlausibleWeb.ErrorView)
|
|
|> render("#{status}.html", message: message, layout: error_layout())
|
|
end
|
|
|
|
def render_error(conn, status) do
|
|
conn
|
|
|> 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]
|
|
|
|
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)
|
|
}
|
|
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
|
|
end
|