# frozen_string_literal: true # Handling a new user registration through the sign-up modal class RegistrationsController < Devise::RegistrationsController # POST /users.json def create # Is public registration allowed? unless Setting.get('public_registrations') render json: { errors: { signup: [t('errors.messages.registration_disabled')] } }, status: :forbidden and return end # first check the recaptcha check = RecaptchaService.verify(params[:user][:recaptcha]) render json: check['error-codes'], status: :unprocessable_entity and return unless check['success'] # then create the user build_resource(sign_up_params) resource_saved = resource.save yield resource if block_given? if resource_saved if resource.active_for_authentication? set_flash_message :notice, :signed_up if is_flashing_format? # Allows sending the confirmation email without blocking the access to the dashboard resource.send_confirmation_instructions sign_up(resource_name, resource) unless Setting.get('confirmation_required') respond_with resource, location: after_sign_up_path_for(resource) else set_flash_message :notice, :"signed_up_but_#{resource.inactive_message}" if is_flashing_format? expire_data_after_sign_in! respond_with resource, location: after_inactive_sign_up_path_for(resource) end else clean_up_passwords resource respond_with resource end end end