diff options
author | Nick Thomas <nick@gitlab.com> | 2019-05-16 17:19:01 +0300 |
---|---|---|
committer | Nick Thomas <nick@gitlab.com> | 2019-05-16 17:19:01 +0300 |
commit | 2bde9de6088cf24aae6a721c9680cf8e5814f2fc (patch) | |
tree | c8a1b75553d4cec344b465827a8bcaef197b032c /app/controllers | |
parent | 542b2a7e356272cfdc3037b788d7e15b2f8739ac (diff) | |
parent | 9d3676846c860dcd7865b339d58588184b2f9e6c (diff) |
Merge branch 'reg-captcha-flag' into 'master'
Add :registrations_recaptcha feature flag
Closes gitlab-ee#11389
See merge request gitlab-org/gitlab-ce!28296
Diffstat (limited to 'app/controllers')
-rw-r--r-- | app/controllers/registrations_controller.rb | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/app/controllers/registrations_controller.rb b/app/controllers/registrations_controller.rb index 0fa4677ced1..07b38371ab9 100644 --- a/app/controllers/registrations_controller.rb +++ b/app/controllers/registrations_controller.rb @@ -4,6 +4,7 @@ class RegistrationsController < Devise::RegistrationsController include Recaptcha::Verify include AcceptsPendingInvitations + prepend_before_action :check_captcha, only: :create before_action :whitelist_query_limiting, only: [:destroy] before_action :ensure_terms_accepted, if: -> { Gitlab::CurrentSettings.current_application_settings.enforce_terms? }, @@ -21,15 +22,10 @@ class RegistrationsController < Devise::RegistrationsController params[resource_name] = params.delete(:"new_#{resource_name}") end - if !Gitlab::Recaptcha.load_configurations! || verify_recaptcha - accept_pending_invitations - super do |new_user| - persist_accepted_terms_if_required(new_user) - end - else - flash[:alert] = s_('Profiles|There was an error with the reCAPTCHA. Please solve the reCAPTCHA again.') - flash.delete :recaptcha_error - render action: 'new' + accept_pending_invitations + + super do |new_user| + persist_accepted_terms_if_required(new_user) end rescue Gitlab::Access::AccessDeniedError redirect_to(new_user_session_path) @@ -89,6 +85,17 @@ class RegistrationsController < Devise::RegistrationsController private + def check_captcha + return unless Feature.enabled?(:registrations_recaptcha, default_enabled: true) + return unless Gitlab::Recaptcha.load_configurations! + + return if verify_recaptcha + + flash[:alert] = _('There was an error with the reCAPTCHA. Please solve the reCAPTCHA again.') + flash.delete :recaptcha_error + render action: 'new' + end + def sign_up_params params.require(:user).permit(:username, :email, :email_confirmation, :name, :password) end |