mirror of
https://github.com/ash-project/ash_hq.git
synced 2024-09-20 21:33:10 +12:00
36 lines
962 B
Elixir
36 lines
962 B
Elixir
|
defmodule AshHqWeb.UserRegistrationController do
|
||
|
use AshHqWeb, :controller
|
||
|
|
||
|
alias AshHq.Accounts
|
||
|
alias AshHq.Accounts.User
|
||
|
alias AshHqWeb.UserAuth
|
||
|
|
||
|
def new(conn, _params) do
|
||
|
form = AshPhoenix.Form.for_create(User, :register, as: "user")
|
||
|
|
||
|
render(conn, "new.html", form: form)
|
||
|
end
|
||
|
|
||
|
def create(conn, %{"user" => user_params}) do
|
||
|
User
|
||
|
|> AshPhoenix.Form.for_create(:register, api: AshHq.Accounts, as: "user")
|
||
|
|> AshPhoenix.Form.validate(user_params)
|
||
|
|> AshPhoenix.Form.submit()
|
||
|
|> case do
|
||
|
{:ok, user} ->
|
||
|
user
|
||
|
|> Ash.Changeset.for_update(:deliver_user_confirmation_instructions, %{
|
||
|
confirmation_url_fun: &Routes.user_confirmation_url(conn, :confirm, &1)
|
||
|
})
|
||
|
|> Accounts.update!()
|
||
|
|
||
|
conn
|
||
|
|> put_flash(:info, "User created successfully.")
|
||
|
|> UserAuth.log_in_user(user)
|
||
|
|
||
|
{:error, form} ->
|
||
|
render(conn, "new.html", form: form)
|
||
|
end
|
||
|
end
|
||
|
end
|