diff options
author | Alex S <alex.strizhakov@gmail.com> | 2019-04-06 17:18:59 +0700 |
---|---|---|
committer | Alex S <alex.strizhakov@gmail.com> | 2019-04-06 17:18:59 +0700 |
commit | be54e40890432d2cd8e592e6d4acfa9f1e98586c (patch) | |
tree | 6e72689e39ca56e2fa93442ba0d8b5f52dc92ebd /lib | |
parent | 0484f3a8b1ae2103d1d756e5c09f2bdb218a7207 (diff) | |
download | pleroma-be54e40890432d2cd8e592e6d4acfa9f1e98586c.tar.gz |
twitter api registration
fix for twitter api tests
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pleroma/web/twitter_api/twitter_api.ex | 59 |
1 files changed, 36 insertions, 23 deletions
diff --git a/lib/pleroma/web/twitter_api/twitter_api.ex b/lib/pleroma/web/twitter_api/twitter_api.ex index 9b081a316..a578fbbf4 100644 --- a/lib/pleroma/web/twitter_api/twitter_api.ex +++ b/lib/pleroma/web/twitter_api/twitter_api.ex @@ -163,36 +163,49 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do {:error, %{error: Jason.encode!(%{captcha: [error]})}} else registrations_open = Pleroma.Config.get([:instance, :registrations_open]) + registration_process(registrations_open, params, token_string) + end + end - # no need to query DB if registration is open - token = - unless registrations_open || is_nil(token_string) do - Repo.get_by(UserInviteToken, %{token: token_string}) - end + defp registration_process(_registration_open = true, params, _token_string) do + create_user(params) + end - cond do - registrations_open || (!is_nil(token) && !token.used) -> - changeset = User.register_changeset(%User{}, params) + defp registration_process(registration_open, params, token_string) + when registration_open == false or is_nil(registration_open) do + token = + unless is_nil(token_string) do + Repo.get_by(UserInviteToken, %{token: token_string}) + end - with {:ok, user} <- User.register(changeset) do - !registrations_open && UserInviteToken.mark_as_used(token.token) + valid_token? = token && UserInviteToken.valid_token?(token) - {:ok, user} - else - {:error, changeset} -> - errors = - Ecto.Changeset.traverse_errors(changeset, fn {msg, _opts} -> msg end) - |> Jason.encode!() + case token do + nil -> + {:error, "Invalid token"} - {:error, %{error: errors}} - end + token when valid_token? -> + UserInviteToken.update_usage(token) + create_user(params) - !registrations_open && is_nil(token) -> - {:error, "Invalid token"} + _ -> + {:error, "Expired token"} + end + end - !registrations_open && token.used -> - {:error, "Expired token"} - end + defp create_user(params) do + changeset = User.register_changeset(%User{}, params) + + case User.register(changeset) do + {:ok, user} -> + {:ok, user} + + {:error, changeset} -> + errors = + Ecto.Changeset.traverse_errors(changeset, fn {msg, _opts} -> msg end) + |> Jason.encode!() + + {:error, %{error: errors}} end end |