2015-09-23 10:02:01 +02:00
|
|
|
class Users::RegistrationsController < Devise::RegistrationsController
|
2019-01-14 16:26:53 +01:00
|
|
|
include ProcedureContextConcern
|
|
|
|
|
2017-06-12 15:12:51 +02:00
|
|
|
# before_action :configure_sign_up_params, only: [:create]
|
|
|
|
# before_action :configure_account_update_params, only: [:update]
|
2019-01-14 16:26:53 +01:00
|
|
|
before_action :restore_procedure_context, only: [:new, :create]
|
2016-01-04 16:09:04 +01:00
|
|
|
|
2019-01-08 14:23:48 +01:00
|
|
|
layout 'procedure_context', only: [:new, :create]
|
|
|
|
|
2015-09-23 10:02:01 +02:00
|
|
|
# GET /resource/sign_up
|
2018-09-18 16:54:37 +02:00
|
|
|
def new
|
|
|
|
# Allow pre-filling the user email from a query parameter
|
|
|
|
build_resource({ email: sign_up_params[:email] })
|
|
|
|
|
2018-10-01 13:24:37 +02:00
|
|
|
if block_given?
|
|
|
|
yield resource
|
|
|
|
end
|
|
|
|
|
2018-09-18 16:54:37 +02:00
|
|
|
respond_with resource
|
|
|
|
end
|
2015-09-23 10:02:01 +02:00
|
|
|
|
|
|
|
# POST /resource
|
2015-12-15 15:17:12 +01:00
|
|
|
def create
|
2020-02-24 11:55:29 +01:00
|
|
|
# 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
|
|
|
|
|
2018-11-08 15:02:41 +01:00
|
|
|
# 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?
|
2020-02-11 18:17:09 +01:00
|
|
|
UserMailer.new_account_warning(existing_user, @procedure).deliver_later
|
2018-06-20 13:30:32 +02:00
|
|
|
else
|
2018-11-08 15:02:41 +01:00
|
|
|
existing_user.resend_confirmation_instructions
|
2018-06-20 13:30:32 +02:00
|
|
|
end
|
2019-05-07 16:13:31 +02:00
|
|
|
return redirect_to after_inactive_sign_up_path_for(existing_user)
|
2018-05-23 11:27:33 +02:00
|
|
|
end
|
2018-11-08 15:02:41 +01:00
|
|
|
|
|
|
|
super
|
2015-12-15 15:17:12 +01:00
|
|
|
end
|
2015-09-23 10:02:01 +02:00
|
|
|
|
|
|
|
# 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.
|
2018-11-08 15:02:41 +01:00
|
|
|
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
|
2015-09-23 10:02:01 +02:00
|
|
|
end
|