demarches-normaliennes/app/controllers/administrateurs/procedure_administrateurs_controller.rb

53 lines
2 KiB
Ruby
Raw Normal View History

module Administrateurs
2019-04-12 10:43:51 +02:00
class ProcedureAdministrateursController < AdministrateurController
2019-09-24 16:38:58 +02:00
before_action :retrieve_procedure, except: [:new]
before_action :ensure_not_super_admin!, only: [:create]
2019-04-12 10:43:51 +02:00
def index
end
def create
email = params.require(:administrateur)[:email]&.strip&.downcase
# Find the admin
administrateur = Administrateur.by_email(email)
2019-04-12 10:43:51 +02:00
if administrateur.nil?
2021-10-27 18:59:18 +02:00
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>."
2019-04-12 10:43:51 +02:00
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
2019-04-12 10:43:51 +02:00
end
end
end
end