diff --git a/lib/aprsme_web/plugs/ip_geolocation.ex b/lib/aprsme_web/plugs/ip_geolocation.ex index c4a156e..b333e23 100644 --- a/lib/aprsme_web/plugs/ip_geolocation.ex +++ b/lib/aprsme_web/plugs/ip_geolocation.ex @@ -11,7 +11,7 @@ defmodule AprsmeWeb.Plugs.IPGeolocation do def init(opts), do: opts @impl true - def call(%{request_path: "/", method: "GET"} = conn, _opts) do + def call(%{method: "GET"} = conn, _opts) do conn |> get_session(:ip_geolocation) |> handle_geolocation(conn) diff --git a/lib/aprsme_web/router.ex b/lib/aprsme_web/router.ex index c33cc1f..79b2c3e 100644 --- a/lib/aprsme_web/router.ex +++ b/lib/aprsme_web/router.ex @@ -8,6 +8,11 @@ defmodule AprsmeWeb.Router do alias AprsmeWeb.Plugs.IPGeolocation alias AprsmeWeb.Plugs.RateLimiter + @doc false + def regular_pages_session(conn) do + %{"ip_geolocation" => Plug.Conn.get_session(conn, :ip_geolocation)} + end + pipeline :browser do plug :accepts, ["html"] plug :fetch_session @@ -96,6 +101,7 @@ defmodule AprsmeWeb.Router do pipe_through :browser live_session :regular_pages, + session: {__MODULE__, :regular_pages_session, []}, on_mount: [{AprsmeWeb.UserAuth, :mount_current_user}, {AprsmeWeb.LocaleHook, :set_locale}] do live "/status", StatusLive.Index, :index live "/packets", PacketsLive.Index, :index diff --git a/test/aprsme_web/plugs/ip_geolocation_test.exs b/test/aprsme_web/plugs/ip_geolocation_test.exs index cc92b82..c115b24 100644 --- a/test/aprsme_web/plugs/ip_geolocation_test.exs +++ b/test/aprsme_web/plugs/ip_geolocation_test.exs @@ -48,7 +48,7 @@ defmodule AprsmeWeb.Plugs.IPGeolocationTest do assert get_session(conn, :ip_geolocation) == nil end - test "skips non-root paths", %{conn: conn} do + test "works on non-root paths", %{conn: conn} do conn = conn |> Map.put(:request_path, "/about") @@ -56,7 +56,8 @@ defmodule AprsmeWeb.Plugs.IPGeolocationTest do |> put_req_header("cf-iplongitude", "-122.4194") |> IPGeolocation.call([]) - assert get_session(conn, :ip_geolocation) == nil + geo = get_session(conn, :ip_geolocation) + assert geo == %{"lat" => 37.7749, "lng" => -122.4194} end test "skips non-GET requests", %{conn: conn} do