Add an ability to disabled captcha

This commit is contained in:
Ekaterina Vaartis 2018-12-15 02:00:00 +03:00
parent a2399c1c7c
commit 28c43a417e
3 changed files with 37 additions and 18 deletions

View File

@ -11,6 +11,7 @@ config :pleroma, ecto_repos: [Pleroma.Repo]
config :pleroma, Pleroma.Repo, types: Pleroma.PostgresTypes
config :pleroma, Pleroma.Captcha,
enabled: false,
method: Pleroma.Captcha.Kocaptcha
# Kocaptcha is a very simple captcha service, the source code is here: https://github.com/koto-bank/kocaptcha

View File

@ -28,6 +28,15 @@ defmodule Pleroma.Captcha do
@doc false
def handle_call(:new, _from, state) do
enabled = Pleroma.Config.get([__MODULE__, :enabled])
if !enabled do
{
:reply,
%{type: :none},
state
}
else
method = Pleroma.Config.get!([__MODULE__, :method])
case method do
@ -51,6 +60,7 @@ defmodule Pleroma.Captcha do
end
end
end
end
@doc false
def handle_call({:validate, token, captcha}, _from, state) do

View File

@ -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