feat(manager): add #add_administrateur_with_confirmation and #confirm_add_administrateur so SuperAdmin requires another SuperAdmin approval to add an administrator to a procedure. Add #add_administrateur_and_instructeur for SuperAdmin willing to be administrateur/instructeur for 24
This commit is contained in:
parent
f0a4cbb61e
commit
ef67958324
4 changed files with 43 additions and 22 deletions
|
@ -46,23 +46,39 @@ module Manager
|
|||
send_data(emails.join("\n"), :filename => "brouillons-#{procedure.id}-au-#{date}.csv")
|
||||
end
|
||||
|
||||
def add_administrateur
|
||||
add_self = params[:email].blank?
|
||||
administrateur_email = add_self ? current_super_admin.email : params[:email]
|
||||
administrateur = Administrateur.by_email(administrateur_email)
|
||||
if administrateur
|
||||
AdministrateursProcedure.create(procedure: procedure, administrateur: administrateur, manager: add_self)
|
||||
if add_self
|
||||
flash[:notice] = "L’administrateur \"#{administrateur_email}\" est ajouté à la démarche pour la journée."
|
||||
else
|
||||
flash[:notice] = "L’administrateur \"#{administrateur_email}\" est ajouté à la démarche."
|
||||
def add_administrateur_and_instructeur
|
||||
administrateur = Administrateur.by_email(current_super_admin.email)
|
||||
instructeur = Instructeur.by_email(current_super_admin.email)
|
||||
if administrateur && instructeur
|
||||
ActiveRecord::Base.transaction do
|
||||
AdministrateursProcedure.create!(procedure: procedure, administrateur: administrateur, manager: true)
|
||||
procedure.groupe_instructeurs.map do |groupe_instructeur|
|
||||
instructeur.assign_to.create(groupe_instructeur: groupe_instructeur, manager: true)
|
||||
end
|
||||
else
|
||||
if add_self
|
||||
flash[:alert] = "Vous n’êtes pas connecté en tant qu’administrateur."
|
||||
else
|
||||
flash[:alert] = "L’administrateur \"#{administrateur_email}\" est introuvable."
|
||||
end
|
||||
|
||||
flash[:notice] = "L’administrateur \"#{administrateur.email}\" a été ajoutés à la démarche. instructeur \"#{instructeur.email}\" a été ajouté aux #{procedure.groupe_instructeurs.count} groupe(s) d'instructeur"
|
||||
else
|
||||
flash[:alert] = "L’administrateur \"#{administrateur.email}\" est introuvable."
|
||||
end
|
||||
redirect_to manager_procedure_path(procedure)
|
||||
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)
|
||||
end
|
||||
|
||||
def confirm_add_administrateur
|
||||
administrateur_email = params[:email]
|
||||
if administrateur_email != current_super_admin.email
|
||||
administrateur = Administrateur.by_email(params[:email])
|
||||
AdministrateursProcedure.create!(procedure: procedure, administrateur: administrateur)
|
||||
flash[:notice] = "L’administrateur \"#{administrateur.email}\" a été ajoutés à la démarche."
|
||||
else
|
||||
flash[:alert] = "Veuillez partager ce lien avec un autre super administrateur pour qu'il confirme votre action"
|
||||
end
|
||||
redirect_to manager_procedure_path(procedure)
|
||||
end
|
||||
|
|
|
@ -15,7 +15,8 @@ class Administrateur < ApplicationRecord
|
|||
UNUSED_ADMIN_THRESHOLD = 6.months
|
||||
|
||||
has_and_belongs_to_many :instructeurs
|
||||
has_and_belongs_to_many :procedures
|
||||
has_many :administrateurs_procedures, dependent: :destroy
|
||||
has_many :procedures, through: :administrateurs_procedures
|
||||
has_many :services
|
||||
|
||||
belongs_to :user
|
||||
|
|
|
@ -64,17 +64,19 @@ as well as a link to its edit page.
|
|||
<dd class="attribute-data attribute-data--<%=attribute.html_class%>">
|
||||
<%= render_field attribute, page: page %>
|
||||
<% if attribute.name == 'administrateurs' %>
|
||||
<%= form_tag(add_administrateur_manager_procedure_path(procedure), style: 'margin-top: 1rem;') do %>
|
||||
<%= form_tag(add_administrateur_with_confirmation_manager_procedure_path(procedure), style: 'margin-top: 1rem;') do %>
|
||||
<%= email_field_tag(:email, '', placeholder: 'Email', autocapitalize: 'off', autocorrect: 'off', spellcheck: 'false', style: 'margin-bottom: 1rem;width:24rem;') %>
|
||||
<button>Ajouter un administrateur</button>
|
||||
<button>Ajouter un administrateur (pour toujours)</button>
|
||||
<p>J'utilise cette option ETQ support quand un usager a besoin de devenir administrateur sur une démarche</p>
|
||||
<% end %>
|
||||
<% if procedure.administrateurs.find { |admin| admin.email == current_super_admin.email } %>
|
||||
<p style="margin-top: 20px;">Vous êtes déjà administrateur sur cette démarche</p>
|
||||
<%= link_to 'Me retirer de cette démarche', delete_administrateur_manager_procedure_path(procedure), method: :put, class: 'button' %>
|
||||
|
||||
<% else %>
|
||||
<%= form_tag(add_administrateur_manager_procedure_path(procedure), style: 'margin-top: 1rem;') do %>
|
||||
<button>Devenir administrateur (pour la journée)</button>
|
||||
<%= form_tag(add_administrateur_and_instructeur_manager_procedure_path(procedure), style: 'margin-top: 1rem;') do %>
|
||||
<button>Devenir administrateur & instructeur (pour la journée)</button>
|
||||
<p>J'utilise cette option ETQ support/dev afin d'aller sur investiguer quelque chose sur démarche</p>
|
||||
|
||||
<% end %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
|
|
|
@ -15,8 +15,10 @@ Rails.application.routes.draw do
|
|||
post 'draft', on: :member
|
||||
post 'discard', on: :member
|
||||
post 'restore', on: :member
|
||||
post 'add_administrateur', on: :member
|
||||
put 'delete_administrateur', on: :member
|
||||
post 'add_administrateur_and_instructeur', on: :member
|
||||
post 'add_administrateur_with_confirmation', on: :member
|
||||
get 'confirm_add_administrateur', on: :member
|
||||
post 'change_piece_justificative_template', on: :member
|
||||
get 'export_mail_brouillons', on: :member
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue