diff --git a/lib/beet_round_server/accounts.ex b/lib/beet_round_server/accounts.ex index 81dea2c..e2ad24e 100644 --- a/lib/beet_round_server/accounts.ex +++ b/lib/beet_round_server/accounts.ex @@ -180,6 +180,13 @@ defmodule BeetRoundServer.Accounts do |> update_user_and_delete_all_tokens() end + def create_email_token(%User{} = user) do + {encoded_token, user_token} = UserToken.build_email_token(user, "session") + Repo.insert!(user_token) + + encoded_token + end + ## Session @doc """ diff --git a/lib/beet_round_server_web/controllers/user_controller.ex b/lib/beet_round_server_web/controllers/user_controller.ex index 4c8b586..bea6ae3 100644 --- a/lib/beet_round_server_web/controllers/user_controller.ex +++ b/lib/beet_round_server_web/controllers/user_controller.ex @@ -54,16 +54,22 @@ defmodule BeetRoundServerWeb.UserController do # end defp send_created_response(conn, %User{} = user) do + encoded_token = Accounts.create_email_token(user) + conn |> put_status(:created) |> put_resp_header("location", ~p"/api/users/#{user}") - |> render(:show, %{user: user}) + |> render(:show, %{user: user, token: encoded_token}) end defp send_already_reported_response(conn, %User{} = user) do + encoded_token = Accounts.create_email_token(user) + IO.puts("encoded_token for user: " <> user.email) + IO.inspect(encoded_token) + conn |> put_status(:already_reported) - |> render(:show, %{user: user}) + |> render(:show, %{user: user, token: encoded_token}) end defp send_not_acceptable(conn, changeset) do diff --git a/lib/beet_round_server_web/controllers/user_json.ex b/lib/beet_round_server_web/controllers/user_json.ex index bc10b20..d178a9f 100644 --- a/lib/beet_round_server_web/controllers/user_json.ex +++ b/lib/beet_round_server_web/controllers/user_json.ex @@ -8,6 +8,13 @@ defmodule BeetRoundServerWeb.UserJSON do %{data: for(user <- users, do: data(user))} end + @doc """ + Renders a single user with token. + """ + def show(%{user: user, token: encoded_token}) do + %{data: %{email: user.email, id: user.id, token: encoded_token}} + end + @doc """ Renders a single user. """