feat(ExportComponent): only render it when connected instructeur/administrateur is not from manager
This commit is contained in:
parent
25c0e91d87
commit
711b2ee2e4
14 changed files with 30 additions and 27 deletions
|
@ -1,6 +1,7 @@
|
|||
module Administrateurs
|
||||
class AdministrateurController < ApplicationController
|
||||
before_action :authenticate_administrateur!
|
||||
helper_method :is_administrateur_through_procedure_administration_as_manager?
|
||||
|
||||
def retrieve_procedure
|
||||
id = params[:procedure_id] || params[:id]
|
||||
|
@ -11,19 +12,6 @@ module Administrateurs
|
|||
redirect_to admin_procedures_path, status: 404
|
||||
end
|
||||
|
||||
def is_administrateur_through_procedure_administration_as_manager?
|
||||
id = params[:procedure_id] || params[:id]
|
||||
|
||||
current_administrateur.administrateurs_procedures
|
||||
.exists?(procedure_id: id, manager: true)
|
||||
end
|
||||
|
||||
def ensure_not_super_admin!
|
||||
if is_administrateur_through_procedure_administration_as_manager?
|
||||
redirect_back fallback_location: root_url, alert: "Interdit aux super admins", status: 403
|
||||
end
|
||||
end
|
||||
|
||||
def procedure_locked?
|
||||
if @procedure.locked?
|
||||
flash.alert = 'Démarche verrouillée'
|
||||
|
@ -43,5 +31,20 @@ module Administrateurs
|
|||
@procedure.reset!
|
||||
end
|
||||
end
|
||||
|
||||
def ensure_not_super_admin!
|
||||
if is_administrateur_through_procedure_administration_as_manager?
|
||||
redirect_back fallback_location: root_url, alert: "Interdit aux super admins", status: 403
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def is_administrateur_through_procedure_administration_as_manager?
|
||||
id = params[:procedure_id] || params[:id]
|
||||
|
||||
current_administrateur.administrateurs_procedures
|
||||
.exists?(procedure_id: id, manager: true)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -13,7 +13,6 @@ module Administrateurs
|
|||
|
||||
def index
|
||||
@procedure = procedure
|
||||
@disabled_as_super_admin = is_administrateur_through_procedure_administration_as_manager?
|
||||
|
||||
if procedure.routee?
|
||||
@groupes_instructeurs = paginated_groupe_instructeurs
|
||||
|
@ -31,7 +30,6 @@ module Administrateurs
|
|||
@groupe_instructeur = groupe_instructeur
|
||||
@instructeurs = paginated_instructeurs
|
||||
@available_instructeur_emails = available_instructeur_emails
|
||||
@disabled_as_super_admin = is_administrateur_through_procedure_administration_as_manager?
|
||||
end
|
||||
|
||||
def create
|
||||
|
|
|
@ -4,7 +4,6 @@ module Administrateurs
|
|||
before_action :ensure_not_super_admin!, only: [:create]
|
||||
|
||||
def index
|
||||
@disabled_as_super_admin = is_administrateur_through_procedure_administration_as_manager?
|
||||
end
|
||||
|
||||
def create
|
||||
|
@ -26,7 +25,6 @@ module Administrateurs
|
|||
# Actually add the admin
|
||||
@procedure.administrateurs << administrateur
|
||||
@administrateur = administrateur
|
||||
@disabled_as_super_admin = is_administrateur_through_procedure_administration_as_manager?
|
||||
flash.notice = "L’administrateur « #{administrateur.email} » a été ajouté à la démarche « #{@procedure.libelle} »."
|
||||
end
|
||||
|
||||
|
|
|
@ -12,6 +12,8 @@ module Instructeurs
|
|||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def is_instructeur_through_assign_tos_as_manager?
|
||||
procedure_id = params[:procedure_id]
|
||||
|
||||
|
|
|
@ -61,7 +61,7 @@ module Instructeurs
|
|||
@counts = current_instructeur
|
||||
.dossiers_count_summary(groupe_instructeur_ids)
|
||||
.symbolize_keys
|
||||
@can_download_dossiers = (@counts[:tous] + @counts[:archives]) > 0
|
||||
@can_download_dossiers = (@counts[:tous] + @counts[:archives]) > 0 && !is_instructeur_through_assign_tos_as_manager?
|
||||
|
||||
dossiers = Dossier.where(groupe_instructeur_id: groupe_instructeur_ids)
|
||||
dossiers_count = @counts[statut.underscore.to_sym]
|
||||
|
@ -102,7 +102,7 @@ module Instructeurs
|
|||
@a_suivre_count, @suivis_count, @traites_count, @tous_count, @archives_count, @supprimes_recemment_count, @expirant_count = current_instructeur
|
||||
.dossiers_count_summary(groupe_instructeur_ids)
|
||||
.fetch_values('a_suivre', 'suivis', 'traites', 'tous', 'archives', 'supprimes_recemment', 'expirant')
|
||||
@can_download_dossiers = (@tous_count + @archives_count) > 0
|
||||
@can_download_dossiers = (@tous_count + @archives_count) > 0 && !is_instructeur_through_assign_tos_as_manager?
|
||||
|
||||
notifications = current_instructeur.notifications_for_groupe_instructeurs(groupe_instructeur_ids)
|
||||
@has_en_cours_notifications = notifications[:en_cours].present?
|
||||
|
@ -146,7 +146,7 @@ module Instructeurs
|
|||
@can_download_dossiers = current_instructeur
|
||||
.dossiers
|
||||
.visible_by_administration
|
||||
.exists?(groupe_instructeur_id: groupe_instructeur_ids)
|
||||
.exists?(groupe_instructeur_id: groupe_instructeur_ids) && !is_instructeur_through_assign_tos_as_manager?
|
||||
|
||||
export = Export.find_or_create_export(export_format, groupe_instructeurs, **export_options)
|
||||
|
||||
|
|
|
@ -26,9 +26,9 @@
|
|||
# last_champ_updated_at :datetime
|
||||
# last_commentaire_updated_at :datetime
|
||||
# motivation :text
|
||||
# private_search_terms :string
|
||||
# private_search_terms :text
|
||||
# processed_at :datetime
|
||||
# search_terms :string
|
||||
# search_terms :text
|
||||
# state :string
|
||||
# termine_close_to_expiration_notice_sent_at :datetime
|
||||
# created_at :datetime
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
.container
|
||||
%h1.mb-2
|
||||
Archives
|
||||
- # index not renderable as administrateur flagged as manager, so render it anyway
|
||||
= render Dossiers::ExportComponent.new(procedure: @procedure, exports: @exports, export_url: method(:download_admin_procedure_exports_path))
|
||||
|
||||
= render partial: "shared/archives/notice"
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
- # not renderable as administrateur flagged as manager, so render it anyway
|
||||
- if @can_download_dossiers
|
||||
= turbo_stream.update_all '.procedure-actions' do
|
||||
= render Dossiers::ExportComponent.new(procedure: @procedure, exports: @exports, count: @dossiers_count, export_url: method(:admin_procedure_exports_path))
|
||||
|
|
|
@ -22,4 +22,4 @@
|
|||
groupe_instructeur: @procedure.defaut_groupe_instructeur,
|
||||
instructeurs: @instructeurs,
|
||||
available_instructeur_emails: @available_instructeur_emails,
|
||||
disabled_as_super_admin: @disabled_as_super_admin }
|
||||
disabled_as_super_admin: is_administrateur_through_procedure_administration_as_manager? }
|
||||
|
|
|
@ -11,4 +11,4 @@
|
|||
groupe_instructeur: @groupe_instructeur,
|
||||
instructeurs: @instructeurs,
|
||||
available_instructeur_emails: @available_instructeur_emails,
|
||||
disabled_as_super_admin: @disabled_as_super_admin }
|
||||
disabled_as_super_admin: is_administrateur_through_procedure_administration_as_manager? }
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
- if @administrateur.present?
|
||||
= turbo_stream.append "administrateurs", partial: 'administrateur', locals: { procedure: @procedure, administrateur: @administrateur }
|
||||
= turbo_stream.replace "new_administrateur", partial: 'add_admin_form', locals: { procedure: @procedure, disabled_as_super_admin: @disabled_as_super_admin }
|
||||
= turbo_stream.replace "new_administrateur", partial: 'add_admin_form', locals: { procedure: @procedure, disabled_as_super_admin: is_administrateur_through_procedure_administration_as_manager? }
|
||||
|
|
|
@ -16,4 +16,4 @@
|
|||
%tfoot
|
||||
%tr
|
||||
%th{ colspan: 4 }
|
||||
= render 'add_admin_form', procedure: @procedure, disabled_as_super_admin: @disabled_as_super_admin
|
||||
= render 'add_admin_form', procedure: @procedure, disabled_as_super_admin: is_administrateur_through_procedure_administration_as_manager?
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
- # not renderable as instructeur flagged as manager, so render it anyway
|
||||
- if @can_download_dossiers
|
||||
- if @statut.nil?
|
||||
= turbo_stream.update_all '.procedure-actions' do
|
||||
|
|
|
@ -16,7 +16,6 @@ describe 'Manage procedure instructeurs', js: true do
|
|||
|
||||
scenario 'it works' do
|
||||
visit admin_procedure_path(procedure)
|
||||
byebug
|
||||
find('#groupe-instructeurs').click
|
||||
expect(page).to have_css("h1", text: "Gérer les instructeurs et les options d'instruction de « #{procedure.libelle} »")
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue