2023-12-19 16:31:57 +01:00
|
|
|
class RecoveriesController < ApplicationController
|
2023-12-12 15:25:22 +01:00
|
|
|
before_action :ensure_agent_connect_is_used, except: [:nature, :post_nature, :support]
|
2023-12-19 16:25:41 +01:00
|
|
|
before_action :ensure_collectivite_territoriale, except: [:nature, :post_nature, :support]
|
2023-12-12 15:25:22 +01:00
|
|
|
|
2023-12-19 16:31:57 +01:00
|
|
|
def nature
|
|
|
|
end
|
|
|
|
|
|
|
|
def post_nature
|
|
|
|
if nature_params == 'collectivite'
|
|
|
|
redirect_to identification_recovery_path
|
|
|
|
else
|
2023-12-19 13:00:36 +01:00
|
|
|
redirect_to support_recovery_path(error: :other_nature)
|
2023-12-19 16:31:57 +01:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def identification
|
2023-12-13 09:44:28 +01:00
|
|
|
@structure_name = structure_name
|
2023-12-19 16:31:57 +01:00
|
|
|
end
|
|
|
|
|
|
|
|
def post_identification
|
2023-12-13 09:44:28 +01:00
|
|
|
# cookies are used to avoid leaking
|
|
|
|
# email in url
|
|
|
|
cookies[:recover_previous_email] = previous_email
|
|
|
|
|
2023-12-19 16:31:57 +01:00
|
|
|
redirect_to selection_recovery_path
|
|
|
|
end
|
|
|
|
|
|
|
|
def selection
|
2023-12-19 11:18:51 +01:00
|
|
|
previous_user = User.find_by(email: cookies[:recover_previous_email])
|
|
|
|
|
|
|
|
@recoverables = RecoveryService
|
|
|
|
.recoverable_procedures(previous_user:, siret:)
|
|
|
|
|
|
|
|
redirect_to support_recovery_path(error: :no_dossier) if @recoverables.empty?
|
2023-12-19 16:31:57 +01:00
|
|
|
end
|
|
|
|
|
|
|
|
def post_selection
|
2023-12-19 11:18:51 +01:00
|
|
|
previous_user = User.find_by(email: cookies[:recover_previous_email])
|
|
|
|
|
|
|
|
RecoveryService.recover_procedure!(previous_user:,
|
|
|
|
next_user: current_user,
|
|
|
|
siret:,
|
|
|
|
procedure_ids:)
|
|
|
|
|
2023-12-19 16:31:57 +01:00
|
|
|
redirect_to terminee_recovery_path
|
|
|
|
end
|
|
|
|
|
|
|
|
def terminee
|
|
|
|
end
|
|
|
|
|
|
|
|
def support
|
|
|
|
end
|
|
|
|
|
|
|
|
private
|
|
|
|
|
|
|
|
def nature_params = params[:nature]
|
2023-12-19 16:25:41 +01:00
|
|
|
def siret = current_instructeur.agent_connect_information.siret
|
|
|
|
def previous_email = params[:previous_email]
|
2023-12-19 11:18:51 +01:00
|
|
|
def procedure_ids = params[:procedure_ids].map(&:to_i)
|
2023-12-12 15:25:22 +01:00
|
|
|
|
2023-12-13 09:44:28 +01:00
|
|
|
def structure_name
|
|
|
|
# we know that the structure exists because
|
|
|
|
# of the ensure_collectivite_territoriale guard
|
|
|
|
APIRechercheEntreprisesService.new.(siret:).value![:nom_complet]
|
|
|
|
end
|
|
|
|
|
2023-12-12 15:25:22 +01:00
|
|
|
def ensure_agent_connect_is_used
|
|
|
|
if current_instructeur&.agent_connect_information.nil?
|
|
|
|
redirect_to support_recovery_path(error: :must_use_agent_connect)
|
|
|
|
end
|
|
|
|
end
|
2023-12-19 16:25:41 +01:00
|
|
|
|
|
|
|
def ensure_collectivite_territoriale
|
|
|
|
if !APIRechercheEntreprisesService.collectivite_territoriale?(siret:)
|
|
|
|
redirect_to support_recovery_path(error: 'not_collectivite_territoriale')
|
|
|
|
end
|
|
|
|
end
|
2023-12-19 16:31:57 +01:00
|
|
|
end
|