demarches-normaliennes/app/controllers/users/registrations_controller.rb
2024-08-22 09:26:48 +02:00

95 lines
2.7 KiB
Ruby

# frozen_string_literal: true
class Users::RegistrationsController < Devise::RegistrationsController
include ProcedureContextConcern
# before_action :configure_sign_up_params, only: [:create]
# before_action :configure_account_update_params, only: [:update]
before_action :restore_procedure_context, only: [:new, :create]
layout 'login', only: [:new, :create]
# GET /resource/sign_up
def new
# Allow pre-filling the user email from a query parameter
build_resource({ email: sign_up_params[:email] })
if block_given?
yield resource
end
respond_with resource
end
# POST /resource
def create
# We may need the confirmation mailer to access the current procedure.
# But there's no easy way to pass an argument to the mailer through
# all Devise code.
# So instead we use a per-request global variable.
CurrentConfirmation.procedure_after_confirmation = @procedure
CurrentConfirmation.prefill_token = @prefill_token
# Handle existing user trying to sign up again
existing_user = User.find_by(email: params[:user][:email])
if existing_user.present?
if existing_user.confirmed?
UserMailer.new_account_warning(existing_user, @procedure).deliver_later
else
existing_user.resend_confirmation_instructions
end
return redirect_to after_inactive_sign_up_path_for(existing_user)
end
super do
resource.update_preferred_domain(Current.host) if resource.valid? && helpers.switch_domain_enabled?(request)
end
end
# GET /resource/edit
# def edit
# super
# end
# PUT /resource
# def update
# super
# end
# DELETE /resource
# def destroy
# super
# end
# GET /resource/cancel
# Forces the session data which is usually expired after sign
# in to be expired now. This is useful if the user wants to
# cancel oauth signing in/up in the middle of the process,
# removing all OAuth session data.
# def cancel
# super
# end
# protected
# You can put the params you want to permit in the empty array.
# def configure_sign_up_params
# devise_parameter_sanitizer.for(:sign_up) << :attribute
# end
# You can put the params you want to permit in the empty array.
# def configure_account_update_params
# devise_parameter_sanitizer.for(:account_update) << :attribute
# end
# The path used after sign up.
# def after_sign_up_path_for(resource)
# super(resource)
# end
# The path used after sign up for inactive accounts.
def after_inactive_sign_up_path_for(resource)
flash.discard(:notice) # Remove devise's default message (as we have a custom page to explain it)
new_confirmation_path(resource, :user => { email: resource.email })
end
end