mitgliederverwaltung/lib/mv_web/locale_controller.ex

28 lines
739 B
Elixir

defmodule MvWeb.LocaleController do
use MvWeb, :controller
@supported_locales ["de", "en"]
def set_locale(conn, %{"locale" => locale}) when locale in @supported_locales do
conn
|> put_session(:locale, locale)
|> put_resp_cookie("locale", locale,
max_age: 365 * 24 * 60 * 60,
same_site: "Lax",
http_only: true,
secure: Application.get_env(:mv, :use_secure_cookies, false)
)
|> redirect(to: get_referer(conn) || "/")
end
def set_locale(conn, _params), do: redirect(conn, to: get_referer(conn) || "/")
defp get_referer(conn) do
conn.req_headers
|> Enum.find(fn {k, _v} -> k == "referer" end)
|> case do
{_, v} -> URI.parse(v).path
_ -> nil
end
end
end