defmodule PhoenixKitWeb.Users.RegistrationLive do use PhoenixKitWeb, :live_view alias PhoenixKit.Users.Auth alias PhoenixKit.Users.Auth.User def render(assigns) do ~H"""

Join PhoenixKit!

Create your account to access authentication features. Get started with our intelligent authentication platform designed for Phoenix applications.

Already have an account? <.link navigate="/phoenix_kit/users/log-in" class="font-semibold text-primary hover:underline" > Sign in here

Create account

<.form for={@form} id="registration_form" phx-submit="save" phx-change="validate" phx-trigger-action={@trigger_submit} action="/phoenix_kit/users/log-in?_action=registered" method="post" >
Account Information
Oops, something went wrong! Please check the errors below.

Please enter a valid email address

Password must be at least 8 characters long

Development mode: Check <.link href="/dev/mailbox" class="font-semibold underline">mailbox for confirmation emails
""" end def mount(_params, _session, socket) do changeset = Auth.change_user_registration(%User{}) socket = socket |> assign(trigger_submit: false, check_errors: false) |> assign_form(changeset) {:ok, socket, temporary_assigns: [form: nil]} end def handle_event("save", %{"user" => user_params}, socket) do case Auth.register_user(user_params) do {:ok, user} -> {:ok, _} = Auth.deliver_user_confirmation_instructions( user, &"/phoenix_kit/users/confirm/#{&1}" ) changeset = Auth.change_user_registration(user) {:noreply, socket |> assign(trigger_submit: true) |> assign_form(changeset)} {:error, %Ecto.Changeset{} = changeset} -> {:noreply, socket |> assign(check_errors: true) |> assign_form(changeset)} end end def handle_event("validate", %{"user" => user_params}, socket) do changeset = Auth.change_user_registration(%User{}, user_params) {:noreply, assign_form(socket, Map.put(changeset, :action, :validate))} end defp assign_form(socket, %Ecto.Changeset{} = changeset) do form = to_form(changeset, as: "user") if changeset.valid? do assign(socket, form: form, check_errors: false) else assign(socket, form: form) end end defp show_dev_notice? do case Application.get_env(:phoenix_kit, PhoenixKit.Mailer)[:adapter] do Swoosh.Adapters.Local -> true _ -> false end end end