Add optional hCaptcha support

Fixes #1649

This requires setting `HCAPTCHA_SECRET_KEY` and `HCAPTCHA_SITE_KEY`, then
enabling the admin setting at
`/admin/settings/edit#form_admin_settings_captcha_enabled`

Subsequently, a hCaptcha widget will be displayed on `/about` and
`/auth/sign_up` unless:
- the user is already signed-up already
- the user has used an invite link
- the user has already solved the captcha (and registration failed for another
  reason)

The Content-Security-Policy headers are altered automatically to allow the
third-party hCaptcha scripts on `/about` and `/auth/sign_up` following the same
rules as above.
This commit is contained in:
Claire
2022-01-24 19:06:19 +01:00
parent e58e0eb9aa
commit 1b493c9fee
15 changed files with 121 additions and 2 deletions

View File

@@ -40,6 +40,7 @@ class Form::AdminSettings
noindex
outgoing_spoilers
require_invite_text
captcha_enabled
).freeze
BOOLEAN_KEYS = %i(
@@ -58,6 +59,7 @@ class Form::AdminSettings
trendable_by_default
noindex
require_invite_text
captcha_enabled
).freeze
UPLOAD_KEYS = %i(