maybe_disable_registration.ex 863 B

123456789101112131415161718192021222324252627282930313233
  1. defmodule PlausibleWeb.Plugs.MaybeDisableRegistration do
  2. @moduledoc """
  3. Plug toggling registration according to selfhosted state.
  4. """
  5. import Phoenix.Controller
  6. import Plug.Conn
  7. alias Plausible.Release
  8. alias PlausibleWeb.Router.Helpers, as: Routes
  9. def init(opts) do
  10. opts
  11. end
  12. def call(conn, _opts) do
  13. disabled_for = List.wrap(conn.assigns.disable_registration_for)
  14. selfhost_config = Application.get_env(:plausible, :selfhost)
  15. disable_registration = Keyword.fetch!(selfhost_config, :disable_registration)
  16. first_launch? = Release.should_be_first_launch?()
  17. if not first_launch? and disable_registration in disabled_for do
  18. conn
  19. |> put_flash(:error, "Registration is disabled on this instance")
  20. |> redirect(to: Routes.auth_path(conn, :login_form))
  21. |> halt()
  22. else
  23. conn
  24. end
  25. end
  26. end