module Manager class ConfirmationUrlsController < Manager::ApplicationController before_action :ensure_administrateur_exists before_action :ensure_not_already_added def new @url = new_manager_procedure_administrateur_confirmation_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("confirm_adding_administrateur") verifier = ActiveSupport::MessageVerifier.new(key) Base64.urlsafe_encode64(verifier.generate(parameters)) end end end