defmodule PhilomenaWeb.LastIpPlug do @moduledoc """ This plug stores the connecting IP address in the session. ## Example plug PhilomenaWeb.LastIpPlug """ alias Plug.Conn @doc false @spec init(any()) :: any() def init(opts), do: opts @doc false @spec call(Conn.t(), any()) :: Conn.t() def call(conn, _opts) do {:ok, ip} = EctoNetwork.INET.cast(conn.remote_ip) conn |> Conn.fetch_session() |> Conn.put_session(:remote_ip, to_string(ip)) end end