Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix CAPTCHA page not following design pattern of sign-up flow #25395

Merged
merged 1 commit into from Jun 13, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
5 changes: 5 additions & 0 deletions app/controllers/concerns/captcha_concern.rb
Expand Up @@ -2,6 +2,7 @@

module CaptchaConcern
extend ActiveSupport::Concern

include Hcaptcha::Adapters::ViewMethods

included do
Expand Down Expand Up @@ -35,18 +36,22 @@ def check_captcha!
flash.delete(:hcaptcha_error)
yield message
end

false
end
end

def extend_csp_for_captcha!
policy = request.content_security_policy

return unless captcha_required? && policy.present?

%w(script_src frame_src style_src connect_src).each do |directive|
values = policy.send(directive)

values << 'https://hcaptcha.com' unless values.include?('https://hcaptcha.com') || values.include?('https:')
values << 'https://*.hcaptcha.com' unless values.include?('https://*.hcaptcha.com') || values.include?('https:')

policy.send(directive, *values)
end
end
Expand Down
4 changes: 3 additions & 1 deletion app/javascript/styles/mastodon/forms.scss
Expand Up @@ -1048,7 +1048,9 @@ code {
}

.simple_form .h-captcha {
text-align: center;
display: flex;
justify-content: center;
margin-bottom: 30px;
}

.permissions-list {
Expand Down
8 changes: 5 additions & 3 deletions app/views/auth/confirmations/captcha.html.haml
Expand Up @@ -7,10 +7,12 @@
= hidden_field_tag :confirmation_token, params[:confirmation_token]
= hidden_field_tag :redirect_to_app, params[:redirect_to_app]

%h1.title= t('auth.captcha_confirmation.title')
%p.lead= t('auth.captcha_confirmation.hint_html')

.field-group
= render_captcha
= render_captcha

%p.lead= t('auth.captcha_confirmation.help_html', email: mail_to(Setting.site_contact_email, nil))

.actions
%button.button= t('challenge.confirm')
= button_tag t('challenge.confirm'), class: 'button', type: :submit
5 changes: 3 additions & 2 deletions config/locales/en.yml
Expand Up @@ -993,8 +993,9 @@ en:
auth:
apply_for_account: Request an account
captcha_confirmation:
hint_html: Just one more step! To confirm your account, this server requires you to solve a CAPTCHA. You can <a href="/about/more">contact the server administrator</a> if you have questions or need assistance with confirming your account.
title: User verification
help_html: If you have issues solving the CAPTCHA, you can get in touch with us through %{email} and we can assist you.
hint_html: Just one more thing! We need to confirm you're a human (this is so we can keep the spam out!). Solve the CAPTCHA below and click "Continue".
title: Security check
change_password: Password
confirmations:
wrong_email_hint: If that e-mail address is not correct, you can change it in account settings.
Expand Down