mirror of
https://github.com/danbee/chess
synced 2025-03-04 08:39:06 +00:00
29 lines
536 B
Elixir
29 lines
536 B
Elixir
defmodule ChessWeb.Plugs.CanonicalDomain do
|
|
@moduledoc false
|
|
|
|
import Plug.Conn
|
|
|
|
def init(options) do
|
|
options
|
|
end
|
|
|
|
def call(conn, _options) do
|
|
if conn.host != canonical_host() do
|
|
conn
|
|
|> put_status(:moved_permanently)
|
|
|> Phoenix.Controller.redirect(external: canonical_domain(conn))
|
|
|> halt()
|
|
else
|
|
conn
|
|
end
|
|
end
|
|
|
|
defp canonical_domain(conn) do
|
|
"//#{canonical_host()}#{conn.request_path}"
|
|
end
|
|
|
|
defp canonical_host() do
|
|
ChessWeb.Endpoint.config(:url)[:host]
|
|
end
|
|
end
|