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

54 lines
1.9 KiB
Ruby
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# frozen_string_literal: true
module Manager
class AdministrateurConfirmationsController < Manager::ApplicationController
before_action :set_procedure
before_action :decrypt_params
before_action :ensure_not_inviter, unless: -> { Rails.env.development? }
before_action :ensure_not_invited, unless: -> { Rails.env.development? }
def new
@inviter = SuperAdmin.find(@inviter_id)
end
def create
administrateur = Administrateur.by_email(@invited_email)
AdministrateursProcedure.create!(procedure: @procedure, administrateur: administrateur)
flash[:notice] = "Ladministrateur \"#{administrateur.email}\" a été ajouté à la démarche."
redirect_to manager_procedure_path(@procedure)
end
private
def ensure_not_inviter
redirect_unallowed if @inviter_id.to_i == current_super_admin.id
end
def ensure_not_invited
redirect_unallowed if @invited_email == current_super_admin.email
end
def redirect_unallowed
flash[:alert] = "Veuillez partager ce lien avec un autre super administrateur pour qu'il confirme votre action"
redirect_to manager_procedure_path(@procedure)
end
def decrypt_params
@inviter_id = decrypted_params[:inviter_id]
@invited_email = decrypted_params[:email]
rescue ActiveSupport::MessageVerifier::InvalidSignature, ArgumentError
flash[:error] = "Le lien que vous avez utilisé est invalide. Veuillez contacter la personne qui vous l'a envoyé."
redirect_to manager_procedure_path(@procedure)
end
def decrypted_params
@decrypted_params ||= ActiveSupport::MessageVerifier.new(
Rails.application.key_generator.generate_key("confirm_adding_administrateur")
).verify(Base64.urlsafe_decode64(params[:q]))
end
def set_procedure
@procedure = Procedure.with_discarded.find(params[:procedure_id])
end
end
end