aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorEkaterina Vaartis <vaartis@cock.li>2018-12-15 02:00:00 +0300
committerEkaterina Vaartis <vaartis@cock.li>2018-12-15 03:12:47 +0300
commit28c43a417e89ad68674f6e60d7d3025fbb4655ff (patch)
tree174212cefea76a17fbf69766c015900f27c2167f /lib
parenta2399c1c7c17ee1c8e85ae0b6095405c7cb9f6f1 (diff)
downloadpleroma-28c43a417e89ad68674f6e60d7d3025fbb4655ff.tar.gz
Add an ability to disabled captcha
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/captcha.ex52
-rw-r--r--lib/pleroma/web/twitter_api/twitter_api.ex10
2 files changed, 40 insertions, 22 deletions
diff --git a/lib/pleroma/captcha.ex b/lib/pleroma/captcha.ex
index 31f3bc797..ffa5640ea 100644
--- a/lib/pleroma/captcha.ex
+++ b/lib/pleroma/captcha.ex
@@ -28,27 +28,37 @@ defmodule Pleroma.Captcha do
@doc false
def handle_call(:new, _from, state) do
- method = Pleroma.Config.get!([__MODULE__, :method])
-
- case method do
- __MODULE__.Kocaptcha ->
- endpoint = Pleroma.Config.get!([method, :endpoint])
- case HTTPoison.get(endpoint <> "/new") do
- {:error, _} ->
- %{error: "Kocaptcha service unavailable"}
- {:ok, res} ->
- json_resp = Poison.decode!(res.body)
-
- token = json_resp["token"]
-
- true = :ets.insert(@ets, {token, json_resp["md5"]})
-
- {
- :reply,
- %{type: :kocaptcha, token: token, url: endpoint <> json_resp["url"]},
- state
- }
- end
+ enabled = Pleroma.Config.get([__MODULE__, :enabled])
+
+ if !enabled do
+ {
+ :reply,
+ %{type: :none},
+ state
+ }
+ else
+ method = Pleroma.Config.get!([__MODULE__, :method])
+
+ case method do
+ __MODULE__.Kocaptcha ->
+ endpoint = Pleroma.Config.get!([method, :endpoint])
+ case HTTPoison.get(endpoint <> "/new") do
+ {:error, _} ->
+ %{error: "Kocaptcha service unavailable"}
+ {:ok, res} ->
+ json_resp = Poison.decode!(res.body)
+
+ token = json_resp["token"]
+
+ true = :ets.insert(@ets, {token, json_resp["md5"]})
+
+ {
+ :reply,
+ %{type: :kocaptcha, token: token, url: endpoint <> json_resp["url"]},
+ state
+ }
+ end
+ end
end
end
diff --git a/lib/pleroma/web/twitter_api/twitter_api.ex b/lib/pleroma/web/twitter_api/twitter_api.ex
index c9e8fbcbb..9f98c43c9 100644
--- a/lib/pleroma/web/twitter_api/twitter_api.ex
+++ b/lib/pleroma/web/twitter_api/twitter_api.ex
@@ -137,8 +137,16 @@ 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