diff options
Diffstat (limited to 'app/controllers/registrations_controller.rb')
-rw-r--r-- | app/controllers/registrations_controller.rb | 88 |
1 files changed, 19 insertions, 69 deletions
diff --git a/app/controllers/registrations_controller.rb b/app/controllers/registrations_controller.rb index b3dc0e986f4..04cb9616cf6 100644 --- a/app/controllers/registrations_controller.rb +++ b/app/controllers/registrations_controller.rb @@ -3,26 +3,22 @@ class RegistrationsController < Devise::RegistrationsController include Recaptcha::Verify include AcceptsPendingInvitations - include RecaptchaExperimentHelper + include RecaptchaHelper include InvisibleCaptchaOnSignup BLOCKED_PENDING_APPROVAL_STATE = 'blocked_pending_approval'.freeze - layout :choose_layout + layout 'devise' - skip_before_action :required_signup_info, :check_two_factor_requirement, only: [:welcome, :update_registration] prepend_before_action :check_captcha, only: :create before_action :whitelist_query_limiting, :ensure_destroy_prerequisites_met, only: [:destroy] before_action :load_recaptcha, only: :new + before_action :set_invite_params, only: :new feature_category :authentication_and_authorization def new - if experiment_enabled?(:signup_flow) - @resource = build_resource - else - redirect_to new_user_session_path(anchor: 'register-pane') - end + @resource = build_resource end def create @@ -32,6 +28,11 @@ class RegistrationsController < Devise::RegistrationsController super do |new_user| persist_accepted_terms_if_required(new_user) set_role_required(new_user) + + if pending_approval? + NotificationService.new.new_instance_access_request(new_user) + end + yield new_user if block_given? end @@ -52,31 +53,6 @@ class RegistrationsController < Devise::RegistrationsController end end - def welcome - return redirect_to new_user_registration_path unless current_user - return redirect_to path_for_signed_in_user(current_user) if current_user.role.present? && !current_user.setup_for_company.nil? - end - - def update_registration - return redirect_to new_user_registration_path unless current_user - - user_params = params.require(:user).permit(:role, :setup_for_company) - result = ::Users::SignupService.new(current_user, user_params).execute - - if result[:status] == :success - if ::Gitlab.com? && show_onboarding_issues_experiment? - track_experiment_event(:onboarding_issues, 'signed_up') - record_experiment_user(:onboarding_issues) - end - - return redirect_to new_users_sign_up_group_path if experiment_enabled?(:onboarding_issues) && show_onboarding_issues_experiment? - - redirect_to path_for_signed_in_user(current_user) - else - render :welcome - end - end - protected def persist_accepted_terms_if_required(new_user) @@ -160,6 +136,12 @@ class RegistrationsController < Devise::RegistrationsController render action: 'new' end + def pending_approval? + return false unless Gitlab::CurrentSettings.require_admin_approval_after_user_signup + + resource.persisted? && resource.blocked_pending_approval? + end + def sign_up_params params.require(:user).permit(:username, :email, :name, :first_name, :last_name, :password) end @@ -180,49 +162,17 @@ class RegistrationsController < Devise::RegistrationsController Gitlab::QueryLimiting.whitelist('https://gitlab.com/gitlab-org/gitlab-foss/issues/42380') end - def path_for_signed_in_user(user) - if requires_confirmation?(user) - users_almost_there_path - else - stored_location_for(user) || dashboard_projects_path - end - end - - def requires_confirmation?(user) - return false if user.confirmed? - return false if Feature.enabled?(:soft_email_confirmation) - return false if experiment_enabled?(:signup_flow) - - true - end - def load_recaptcha Gitlab::Recaptcha.load_configurations! end - # Part of an experiment to build a new sign up flow. Will be resolved - # with https://gitlab.com/gitlab-org/growth/engineering/issues/64 - def choose_layout - if %w(welcome update_registration).include?(action_name) || experiment_enabled?(:signup_flow) - 'devise_experimental_separate_sign_up_flow' - else - 'devise' - end - end - - def show_onboarding_issues_experiment? - !helpers.in_subscription_flow? && - !helpers.in_invitation_flow? && - !helpers.in_oauth_flow? && - !helpers.in_trial_flow? - end - def set_user_state - return unless Feature.enabled?(:admin_approval_for_new_user_signups, default_enabled: true) return unless Gitlab::CurrentSettings.require_admin_approval_after_user_signup resource.state = BLOCKED_PENDING_APPROVAL_STATE end -end -RegistrationsController.prepend_if_ee('EE::RegistrationsController') + def set_invite_params + @invite_email = ActionController::Base.helpers.sanitize(params[:invite_email]) + end +end |