Gate registration to ALLOWED_REGISTRATION_EMAIL
This commit is contained in:
@@ -10,23 +10,35 @@ defmodule FirehoseWeb.UserRegistrationController do
|
||||
end
|
||||
|
||||
def create(conn, %{"user" => user_params}) do
|
||||
case Accounts.register_user(user_params) do
|
||||
{:ok, user} ->
|
||||
{:ok, _} =
|
||||
Accounts.deliver_login_instructions(
|
||||
user,
|
||||
&url(~p"/users/log-in/#{&1}")
|
||||
allowed_email = Application.get_env(:firehose, :allowed_registration_email)
|
||||
|
||||
if allowed_email == nil or user_params["email"] != allowed_email do
|
||||
changeset =
|
||||
%User{}
|
||||
|> Accounts.change_user_email(user_params)
|
||||
|> Ecto.Changeset.add_error(:email, "registration is invite only.")
|
||||
|> Map.put(:action, :validate)
|
||||
|
||||
render(conn, :new, changeset: changeset)
|
||||
else
|
||||
case Accounts.register_user(user_params) do
|
||||
{:ok, user} ->
|
||||
{:ok, _} =
|
||||
Accounts.deliver_login_instructions(
|
||||
user,
|
||||
&url(~p"/users/log-in/#{&1}")
|
||||
)
|
||||
|
||||
conn
|
||||
|> put_flash(
|
||||
:info,
|
||||
"An email was sent to #{user.email}, please access it to confirm your account."
|
||||
)
|
||||
|> redirect(to: ~p"/users/log-in")
|
||||
|
||||
conn
|
||||
|> put_flash(
|
||||
:info,
|
||||
"An email was sent to #{user.email}, please access it to confirm your account."
|
||||
)
|
||||
|> redirect(to: ~p"/users/log-in")
|
||||
|
||||
{:error, %Ecto.Changeset{} = changeset} ->
|
||||
render(conn, :new, changeset: changeset)
|
||||
{:error, %Ecto.Changeset{} = changeset} ->
|
||||
render(conn, :new, changeset: changeset)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user