defmodule <%= inspect context.web_module %>.<%= inspect Module.concat(schema.web_namespace, schema.alias) %>RegistrationLive do use <%= inspect context.web_module %>, :live_view alias <%= inspect context.module %> alias <%= inspect schema.module %> def render(assigns) do ~H"""
<.header class="text-center"> Register for an account <:subtitle> Already registered? <.link navigate={~p"<%= schema.route_prefix %>/log_in"} class="font-semibold text-brand hover:underline"> Log in to your account now. <.simple_form for={@form} id="registration_form" phx-submit="save" phx-change="validate" phx-trigger-action={@trigger_submit} action={~p"<%= schema.route_prefix %>/log_in?_action=registered"} method="post" > <.error :if={@check_errors}> Oops, something went wrong! Please check the errors below. <.input field={@form[:email]} type="email" label="Email" required /> <.input field={@form[:password]} type="password" label="Password" required /> <:actions> <.button phx-disable-with="Creating account..." class="w-full">Create an account
""" end def mount(_params, _session, socket) do changeset = <%= inspect context.alias %>.change_<%= schema.singular %>_registration(%<%= inspect schema.alias %>{}) socket = socket |> assign(trigger_submit: false, check_errors: false) |> assign_form(changeset) {:ok, socket, temporary_assigns: [form: nil]} end def handle_event("save", %{"<%= schema.singular %>" => <%= schema.singular %>_params}, socket) do case <%= inspect context.alias %>.register_<%= schema.singular %>(<%= schema.singular %>_params) do {:ok, <%= schema.singular %>} -> {:ok, _} = <%= inspect context.alias %>.deliver_<%= schema.singular %>_confirmation_instructions( <%= schema.singular %>, &url(~p"<%= schema.route_prefix %>/confirm/#{&1}") ) changeset = <%= inspect context.alias %>.change_<%= schema.singular %>_registration(<%= schema.singular %>) {: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", %{"<%= schema.singular %>" => <%= schema.singular %>_params}, socket) do changeset = <%= inspect context.alias %>.change_<%= schema.singular %>_registration(%<%= inspect schema.alias %>{}, <%= schema.singular %>_params) {:noreply, assign_form(socket, Map.put(changeset, :action, :validate))} end defp assign_form(socket, %Ecto.Changeset{} = changeset) do form = to_form(changeset, as: "<%= schema.singular %>") if changeset.valid? do assign(socket, form: form, check_errors: false) else assign(socket, form: form) end end end