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

54 lines
2 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 Administrateurs
class ProcedureAdministrateursController < AdministrateurController
before_action :retrieve_procedure, except: [:new]
before_action :ensure_not_super_admin!, only: [:create]
def index
end
def create
email = params.require(:administrateur)[:email]&.strip&.downcase
# Find the admin
administrateur = Administrateur.by_email(email)
if administrateur.nil?
flash.alert = "Ladministrateur « #{email} » nexiste pas. Invitez-le à demander un compte administrateur à ladresse <a href=#{DEMANDE_INSCRIPTION_ADMIN_PAGE_URL}>#{DEMANDE_INSCRIPTION_ADMIN_PAGE_URL}</a>."
return
end
# Prevent duplicates (also enforced in the database in administrateurs_procedures)
if @procedure.administrateurs.include?(administrateur)
flash.alert = "Ladministrateur « #{administrateur.email} » est déjà administrateur de « #{@procedure.libelle} »."
return
end
# Actually add the admin
@procedure.administrateurs << administrateur
@administrateur = administrateur
flash.notice = "Ladministrateur « #{administrateur.email} » a été ajouté à la démarche « #{@procedure.libelle} »."
end
def destroy
admin_to_delete = @procedure.administrateurs.find(params[:id])
if (@procedure.administrateurs - [admin_to_delete]).filter(&:active?).empty?
flash.alert = "Il doit rester au moins un administrateur actif."
else
begin
# Actually remove the admin
@procedure.administrateurs.delete(admin_to_delete)
@administrateur = admin_to_delete
flash.notice = "Ladministrateur \« #{admin_to_delete.email} » a été retiré de la démarche « #{@procedure.libelle} »."
if current_administrateur == admin_to_delete
redirect_to admin_procedures_path
end
rescue ActiveRecord::ActiveRecordError => e
flash.alert = e.message
end
end
end
end
end