defmodule MaatFeatherWeb.UserController do use MaatFeatherWeb, :controller alias MaatFeather.Users alias MaatFeather.Users.User alias MaatFeather.Mailer alias MaatFeather.Mailer.AuthEmail action_fallback MaatFeatherWeb.FallbackController def create(conn, %{"user" => user_params}) do with {:ok, %User{} = user} <- Users.create_user(user_params), account_verification_email <- AuthEmail.account_verification(user), {:ok, _} <- Mailer.deliver(account_verification_email) do conn |> put_status(:created) |> render("show.json", user: user) end end def update(%Plug.Conn{assigns: %{user: %{"sub" => address}}} = conn, %{ "address" => user_address, "user" => user_params }) do with true <- address == user_address, %User{} = user <- Users.get_user!(user_address), {:ok, user} <- Users.update_user(user, user_params) do conn |> put_status(:ok) |> render("show.json", user: user) end end end