X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;f=lib%2Fpleroma%2Fweb%2Ftwitter_api%2Ftwitter_api.ex;h=90b8345c5414639e06e3dc22fc8038c96d890a04;hb=3d980daa49e51c7e3ec1f019e2b68c8108b37c76;hp=c9e8fbcbb4d0825abb3ff0ad60f854786406903d;hpb=a2399c1c7c17ee1c8e85ae0b6095405c7cb9f6f1;p=akkoma diff --git a/lib/pleroma/web/twitter_api/twitter_api.ex b/lib/pleroma/web/twitter_api/twitter_api.ex index c9e8fbcbb..90b8345c5 100644 --- a/lib/pleroma/web/twitter_api/twitter_api.ex +++ b/lib/pleroma/web/twitter_api/twitter_api.ex @@ -137,8 +137,17 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do captcha_token: params["captcha_token"] } + captcha_enabled = Pleroma.Config.get([Pleroma.Captcha, :enabled]) + # true if captcha is disabled or enabled and valid, false otherwise + captcha_ok = + if !captcha_enabled do + true + else + Pleroma.Captcha.validate(params[:captcha_token], params[:captcha_solution]) + end + # Captcha invalid - if not Pleroma.Captcha.validate(params[:captcha_token], params[:captcha_solution]) do + if not captcha_ok do # I have no idea how this error handling works {:error, %{error: Jason.encode!(%{captcha: ["Invalid CAPTCHA"]})}} else @@ -147,8 +156,8 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do # no need to query DB if registration is open token = unless registrations_open || is_nil(tokenString) do - Repo.get_by(UserInviteToken, %{token: tokenString}) - end + Repo.get_by(UserInviteToken, %{token: tokenString}) + end cond do registrations_open || (!is_nil(token) && !token.used) -> @@ -160,18 +169,17 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do else {:error, changeset} -> errors = - Ecto.Changeset.traverse_errors(changeset, fn {msg, _opts} -> msg end) - |> Jason.encode!() + Ecto.Changeset.traverse_errors(changeset, fn {msg, _opts} -> msg end) + |> Jason.encode!() - {:error, %{error: errors}} + {:error, %{error: errors}} end - !registrations_open && is_nil(token) -> - {:error, "Invalid token"} + {:error, "Invalid token"} !registrations_open && token.used -> - {:error, "Expired token"} + {:error, "Expired token"} end end end