aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAlex S <alex.strizhakov@gmail.com>2019-04-06 17:18:59 +0700
committerAlex S <alex.strizhakov@gmail.com>2019-04-06 17:18:59 +0700
commitbe54e40890432d2cd8e592e6d4acfa9f1e98586c (patch)
tree6e72689e39ca56e2fa93442ba0d8b5f52dc92ebd /lib
parent0484f3a8b1ae2103d1d756e5c09f2bdb218a7207 (diff)
downloadpleroma-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.ex59
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