update connecting ip in session

This commit is contained in:
byte[] 2020-10-12 03:01:20 -04:00
parent d1093a80b0
commit 1436c7ff06
2 changed files with 25 additions and 0 deletions

View file

@ -47,5 +47,6 @@ defmodule PhilomenaWeb.Endpoint do
plug PhilomenaWeb.RenderTimePlug
plug PhilomenaWeb.ReferrerPlug
plug PhilomenaWeb.LastIpPlug
plug PhilomenaWeb.Router
end

View file

@ -0,0 +1,24 @@
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