+ Veuillez partager ce lien avec un autre super admin pour que l'opération soit effectuée. +
+-
+
- + Lien + + +
- + <%= @url %> + +
diff --git a/app/controllers/manager/confirmation_urls_controller.rb b/app/controllers/manager/confirmation_urls_controller.rb new file mode 100644 index 000000000..8b05e9f71 --- /dev/null +++ b/app/controllers/manager/confirmation_urls_controller.rb @@ -0,0 +1,46 @@ +module Manager + class ConfirmationUrlsController < Manager::ApplicationController + before_action :ensure_administrateur_exists + before_action :ensure_not_already_added + + def new + @url = confirm_add_administrateur_manager_procedure_url( + procedure.id, + q: encrypt({ email: params[:email], inviter_id: current_super_admin.id }) + ) + end + + private + + def ensure_administrateur_exists + redirect("Cet administrateur n'existe pas. Veuillez réessayer.") unless administrateur + end + + def ensure_not_already_added + redirect("Cet administrateur a déjà été ajouté à cette démarche.") if already_added? + end + + def redirect(alert) + flash[:alert] = alert + redirect_to manager_procedure_path(procedure) + end + + def already_added? + AdministrateursProcedure.exists?(procedure: procedure, administrateur: administrateur) + end + + def administrateur + @administrateur ||= Administrateur.by_email(params[:email]) + end + + def procedure + @procedure ||= Procedure.with_discarded.find(params[:procedure_id]) + end + + def encrypt(parameters) + key = Rails.application.key_generator.generate_key(ENV["SECRET_KEY_BASE"]) + verifier = ActiveSupport::MessageVerifier.new(key) + Base64.urlsafe_encode64(verifier.generate(parameters)) + end + end +end diff --git a/app/controllers/manager/procedures_controller.rb b/app/controllers/manager/procedures_controller.rb index a8058d5c3..b950b5e50 100644 --- a/app/controllers/manager/procedures_controller.rb +++ b/app/controllers/manager/procedures_controller.rb @@ -65,10 +65,7 @@ module Manager end def add_administrateur_with_confirmation - confirmation_url = confirm_add_administrateur_manager_procedure_url(id: procedure.id, email: current_super_admin.email) - - flash[:notice] = "Veuillez partager ce lien : #{confirmation_url} avec un autre super admin pour que l'operation soit effectuée" - redirect_to manager_procedure_path(procedure) + redirect_to new_manager_procedure_confirmation_url_path(procedure, email: params[:email]) end def confirm_add_administrateur diff --git a/app/views/manager/application/_navigation.html.erb b/app/views/manager/application/_navigation.html.erb index 063ba6789..3e7835f7d 100644 --- a/app/views/manager/application/_navigation.html.erb +++ b/app/views/manager/application/_navigation.html.erb @@ -12,7 +12,7 @@ as defined by the routes in the `admin/` namespace
+ Veuillez partager ce lien avec un autre super admin pour que l'opération soit effectuée. +
+