diff --git a/elixir/apps/domain/lib/domain/config.ex b/elixir/apps/domain/lib/domain/config.ex index f774495e2..d7cac36df 100644 --- a/elixir/apps/domain/lib/domain/config.ex +++ b/elixir/apps/domain/lib/domain/config.ex @@ -113,6 +113,10 @@ defmodule Domain.Config do end end + def sign_up_enabled? do + compile_config!(Definitions, :feature_sign_up_enabled) + end + ## Test helpers if Mix.env() != :test do diff --git a/elixir/apps/domain/lib/domain/config/definitions.ex b/elixir/apps/domain/lib/domain/config/definitions.ex index 0e0a2f1c9..e69042d6d 100644 --- a/elixir/apps/domain/lib/domain/config/definitions.ex +++ b/elixir/apps/domain/lib/domain/config/definitions.ex @@ -604,4 +604,13 @@ defmodule Domain.Config.Definitions do default: nil, changeset: {Logo, :changeset, []} ) + + ############################################## + ## Feature Flags + ############################################## + + @doc """ + Boolean flag to turn Sign-ups on/off. + """ + defconfig(:feature_sign_up_enabled, :boolean, default: true) end diff --git a/elixir/apps/web/lib/web/live/sign_up.ex b/elixir/apps/web/lib/web/live/sign_up.ex index 2fa88056d..5390ebae4 100644 --- a/elixir/apps/web/lib/web/live/sign_up.ex +++ b/elixir/apps/web/lib/web/live/sign_up.ex @@ -1,6 +1,6 @@ defmodule Web.SignUp do use Web, {:live_view, layout: {Web.Layouts, :public}} - alias Domain.{Auth, Accounts, Actors} + alias Domain.{Auth, Accounts, Actors, Config} alias Web.Registration defmodule Registration do @@ -37,6 +37,15 @@ defmodule Web.SignUp do actor: %{type: :account_admin_user} }) + socket = + assign(socket, + form: to_form(changeset), + account: nil, + sign_up_enabled?: Config.sign_up_enabled?() + ) + + {:ok, socket} + {:ok, assign(socket, form: to_form(changeset), account: nil)} end @@ -61,8 +70,9 @@ defmodule Web.SignUp do <:item> - <.sign_up_form :if={@account == nil} flash={@flash} form={@form} /> - <.welcome :if={@account} account={@account} /> + <.sign_up_form :if={@account == nil && @sign_up_enabled?} flash={@flash} form={@form} /> + <.welcome :if={@account && @sign_up_enabled?} account={@account} /> + <.sign_up_disabled :if={!@sign_up_enabled?} /> @@ -187,6 +197,29 @@ defmodule Web.SignUp do """ end + def sign_up_disabled(assigns) do + ~H""" +
+ By signing up you agree to our <.link + href="https://www.firezone.dev/terms" + class="text-blue-600 dark:text-blue-500 hover:underline" + >Terms of Use. +
+