mitgliederverwaltung/lib/mv_web/plugs/join_form_enabled.ex
Simon f1d0526209
Some checks failed
continuous-integration/drone/push Build is failing
feat: add join form
2026-03-10 18:25:17 +01:00

33 lines
704 B
Elixir

defmodule MvWeb.Plugs.JoinFormEnabled do
@moduledoc """
For GET /join: returns 404 when the join form is disabled in settings.
No-op for other paths.
"""
import Plug.Conn
alias Mv.Membership
def init(opts), do: opts
def call(conn, _opts) do
if join_path?(conn), do: maybe_404(conn), else: conn
end
defp join_path?(conn) do
conn.request_path == "/join" and conn.method == "GET"
end
defp maybe_404(conn) do
case Membership.get_settings() do
{:ok, %{join_form_enabled: true}} -> conn
_ -> send_404(conn)
end
end
defp send_404(conn) do
conn
|> put_resp_content_type("text/html")
|> send_resp(404, "Not Found")
|> halt()
end
end