+ if check_signup_allowed(current_user.email)
+ current_user.data_public = true
+ current_user.description = "" if current_user.description.nil?
+ current_user.creation_ip = request.remote_ip
+ current_user.languages = http_accept_language.user_preferred_languages
+ current_user.terms_agreed = Time.now.utc
+ current_user.tou_agreed = Time.now.utc
+ current_user.terms_seen = true
+
+ if current_user.auth_uid.blank?
+ current_user.auth_provider = nil
+ current_user.auth_uid = nil
+ elsif current_user.email == verified_email
+ current_user.activate
+ end
+
+ if current_user.save
+ SIGNUP_IP_LIMITER&.update(request.remote_ip)
+ SIGNUP_EMAIL_LIMITER&.update(canonical_email(current_user.email))
+
+ flash[:matomo_goal] = Settings.matomo["goals"]["signup"] if defined?(Settings.matomo)
+
+ referer = welcome_path(welcome_options)
+
+ if current_user.status == "active"
+ session[:referer] = referer
+ successful_login(current_user)
+ else
+ session[:token] = current_user.tokens.create.token
+ UserMailer.signup_confirm(current_user, current_user.tokens.create(:referer => referer)).deliver_later
+ redirect_to :controller => :confirmations, :action => :confirm, :display_name => current_user.display_name
+ end
+ else
+ render :action => "new", :referer => params[:referer]
+ end
+ end