prop/lib/microwaveprop_web/controllers/user_registration_controller.ex
Graham McIntire 1d86e287b2 Add password auth with callsign + email confirmation
Generated Accounts context, User schema, and controllers via
phx.gen.auth. Adapted it for password-only login with required
email confirmation:

- Users have callsign (unique, uppercased), name, email, password
- Registration form fields: callsign, name, email, password, confirm
- Magic-link login path removed; login is email + password only
- After register, a confirmation email is sent and login is blocked
  until the account is confirmed via the token URL
- Confirmation link logs the user in on first use
- SMTP2GO configured as the outgoing mailer in k8s prod
2026-04-08 10:21:40 -05:00

32 lines
903 B
Elixir

defmodule MicrowavepropWeb.UserRegistrationController do
use MicrowavepropWeb, :controller
alias Microwaveprop.Accounts
alias Microwaveprop.Accounts.User
def new(conn, _params) do
changeset = Accounts.change_user_registration(%User{})
render(conn, :new, changeset: changeset)
end
def create(conn, %{"user" => user_params}) do
case Accounts.register_user(user_params) do
{:ok, user} ->
{:ok, _email} =
Accounts.deliver_user_confirmation_instructions(
user,
&url(~p"/users/confirm/#{&1}")
)
conn
|> put_flash(
:info,
"Account created. Please check #{user.email} for a confirmation link to activate your account."
)
|> redirect(to: ~p"/users/log-in")
{:error, %Ecto.Changeset{} = changeset} ->
render(conn, :new, changeset: changeset)
end
end
end