From f1062e7ffd67b00f2c1ca2226f49eb9fa5563e0b Mon Sep 17 00:00:00 2001
From: lecluse <lecluse@d57fa8bc-6af1-4de9-8b7d-78e900e231e7>
Date: Wed, 27 May 2015 11:30:01 +0000
Subject: [PATCH] #1344

---
 module/Application/config/agrement.config.php |  15 ---
 module/Application/config/contrat.config.php  |  15 ---
 .../config/etablissement.config.php           |  19 ---
 .../Application/config/indicateur.config.php  |  15 ---
 module/Application/config/module.config.php   |  37 +-----
 .../config/notification.config.php            |  16 ---
 .../config/offre-formation.config.php         |  15 ---
 module/Application/config/service.config.php  |   2 +-
 .../Application/config/structure.config.php   |  15 ---
 .../Application/config/validation.config.php  |  15 +--
 module/Application/config/workflow.config.php |  19 ---
 .../src/Application/Acl/ComposanteRole.php    |  21 ----
 .../src/Application/Acl/DrhRole.php           |  20 ---
 .../src/Application/Acl/EtablissementRole.php |  10 --
 .../src/Application/Acl/FoadRole.php          |  35 ------
 .../Provider/Role/RoleProvider.php            | 118 ++++++++----------
 16 files changed, 57 insertions(+), 330 deletions(-)
 delete mode 100644 module/Application/src/Application/Acl/FoadRole.php

diff --git a/module/Application/config/agrement.config.php b/module/Application/config/agrement.config.php
index c7c882a005..c30f86f1c6 100644
--- a/module/Application/config/agrement.config.php
+++ b/module/Application/config/agrement.config.php
@@ -2,24 +2,9 @@
 
 namespace Application;
 
-use Application\Acl\Role;
 use Application\Acl\AdministrateurRole;
 use Application\Acl\ComposanteRole;
-use Application\Acl\DirecteurComposanteRole;
-use Application\Acl\GestionnaireComposanteRole;
-use Application\Acl\ResponsableComposanteRole;
-use Application\Acl\SuperviseurComposanteRole;
-use Application\Acl\ResponsableRechercheLaboRole;
-use Application\Acl\DrhRole;
-use Application\Acl\GestionnaireDrhRole;
-use Application\Acl\ResponsableDrhRole;
-use Application\Acl\EtablissementRole;
-use Application\Acl\SuperviseurEtablissementRole;
 use Application\Acl\IntervenantRole;
-use Application\Acl\IntervenantPermanentRole;
-use Application\Acl\IntervenantExterieurRole;
-use Application\Acl\FoadRole;
-use Application\Acl\ResponsableFoadRole;
 use Application\Controller\AgrementController;
 
 return [
diff --git a/module/Application/config/contrat.config.php b/module/Application/config/contrat.config.php
index 2abb80e1ec..b579fede91 100644
--- a/module/Application/config/contrat.config.php
+++ b/module/Application/config/contrat.config.php
@@ -2,24 +2,9 @@
 
 namespace Application;
 
-use Application\Acl\Role;
 use Application\Acl\AdministrateurRole;
 use Application\Acl\ComposanteRole;
-use Application\Acl\DirecteurComposanteRole;
-use Application\Acl\GestionnaireComposanteRole;
-use Application\Acl\ResponsableComposanteRole;
-use Application\Acl\SuperviseurComposanteRole;
-use Application\Acl\ResponsableRechercheLaboRole;
-use Application\Acl\DrhRole;
-use Application\Acl\GestionnaireDrhRole;
-use Application\Acl\ResponsableDrhRole;
-use Application\Acl\EtablissementRole;
-use Application\Acl\SuperviseurEtablissementRole;
-use Application\Acl\IntervenantRole;
-use Application\Acl\IntervenantPermanentRole;
 use Application\Acl\IntervenantExterieurRole;
-use Application\Acl\FoadRole;
-use Application\Acl\ResponsableFoadRole;
 use Application\Assertion\ContratAssertion;
 
 return [
diff --git a/module/Application/config/etablissement.config.php b/module/Application/config/etablissement.config.php
index a703cf58ec..bd2c6d9105 100644
--- a/module/Application/config/etablissement.config.php
+++ b/module/Application/config/etablissement.config.php
@@ -2,25 +2,6 @@
 
 namespace Application;
 
-use Application\Acl\Role;
-use Application\Acl\AdministrateurRole;
-use Application\Acl\ComposanteRole;
-use Application\Acl\DirecteurComposanteRole;
-use Application\Acl\GestionnaireComposanteRole;
-use Application\Acl\ResponsableComposanteRole;
-use Application\Acl\SuperviseurComposanteRole;
-use Application\Acl\ResponsableRechercheLaboRole;
-use Application\Acl\DrhRole;
-use Application\Acl\GestionnaireDrhRole;
-use Application\Acl\ResponsableDrhRole;
-use Application\Acl\EtablissementRole;
-use Application\Acl\SuperviseurEtablissementRole;
-use Application\Acl\IntervenantRole;
-use Application\Acl\IntervenantPermanentRole;
-use Application\Acl\IntervenantExterieurRole;
-use Application\Acl\FoadRole;
-use Application\Acl\ResponsableFoadRole;
-
 return [
     'router' => [
         'routes' => [
diff --git a/module/Application/config/indicateur.config.php b/module/Application/config/indicateur.config.php
index 73ca7c05c7..4160cf31db 100644
--- a/module/Application/config/indicateur.config.php
+++ b/module/Application/config/indicateur.config.php
@@ -2,24 +2,9 @@
 
 namespace Application;
 
-use Application\Acl\Role;
 use Application\Acl\AdministrateurRole;
 use Application\Acl\ComposanteRole;
-use Application\Acl\DirecteurComposanteRole;
-use Application\Acl\GestionnaireComposanteRole;
-use Application\Acl\ResponsableComposanteRole;
-use Application\Acl\SuperviseurComposanteRole;
-use Application\Acl\ResponsableRechercheLaboRole;
 use Application\Acl\DrhRole;
-use Application\Acl\GestionnaireDrhRole;
-use Application\Acl\ResponsableDrhRole;
-use Application\Acl\EtablissementRole;
-use Application\Acl\SuperviseurEtablissementRole;
-use Application\Acl\IntervenantRole;
-use Application\Acl\IntervenantPermanentRole;
-use Application\Acl\IntervenantExterieurRole;
-use Application\Acl\FoadRole;
-use Application\Acl\ResponsableFoadRole;
 
 return [
     'router' => [
diff --git a/module/Application/config/module.config.php b/module/Application/config/module.config.php
index bebe4445c0..aab83a8293 100755
--- a/module/Application/config/module.config.php
+++ b/module/Application/config/module.config.php
@@ -2,37 +2,19 @@
 
 namespace Application;
 
-const R_USER                        = 'user';
-
 const R_ROLE                        = Acl\Role::ROLE_ID;
-
 const R_ADMINISTRATEUR              = Acl\AdministrateurRole::ROLE_ID;
-
 const R_COMPOSANTE                  = Acl\ComposanteRole::ROLE_ID;
-const R_DIRECTEUR_COMPOSANTE        = Acl\DirecteurComposanteRole::ROLE_ID;
-const R_GESTIONNAIRE_COMPOSANTE     = Acl\GestionnaireComposanteRole::ROLE_ID;
-const R_RESPONSABLE_COMPOSANTE      = Acl\ResponsableComposanteRole::ROLE_ID;
-const R_SUPERVISEUR_COMPOSANTE      = Acl\SuperviseurComposanteRole::ROLE_ID;
-
-const R_RESPONSABLE_RECHERCHE_LABO  = Acl\ResponsableRechercheLaboRole::ROLE_ID;
-
 const R_DRH                         = Acl\DrhRole::ROLE_ID;
-const R_GESTIONNAIRE_DRH            = Acl\GestionnaireDrhRole::ROLE_ID;
-const R_RESPONSABLE_DRH             = Acl\ResponsableDrhRole::ROLE_ID;
-
 const R_ETABLISSEMENT               = Acl\EtablissementRole::ROLE_ID;
-const R_SUPERVISEUR_ETABLISSEMENT   = Acl\SuperviseurEtablissementRole::ROLE_ID;
-
 const R_INTERVENANT                 = Acl\IntervenantRole::ROLE_ID;
 const R_INTERVENANT_PERMANENT       = Acl\IntervenantPermanentRole::ROLE_ID;
 const R_INTERVENANT_EXTERIEUR       = Acl\IntervenantExterieurRole::ROLE_ID;
 
-const R_FOAD                        = Acl\FoadRole::ROLE_ID;
-const R_RESPONSABLE_FOAD            = Acl\ResponsableFoadRole::ROLE_ID;
 
-$R_ALL = [R_ADMINISTRATEUR, R_COMPOSANTE, R_RESPONSABLE_RECHERCHE_LABO, R_DRH, R_ETABLISSEMENT, R_INTERVENANT, R_FOAD];
-$R_NOT_INTERVENANT = [R_ADMINISTRATEUR, R_COMPOSANTE, R_RESPONSABLE_RECHERCHE_LABO, R_DRH, R_ETABLISSEMENT, R_FOAD];
-$R_COMMUN = [R_ADMINISTRATEUR, R_DRH, R_ETABLISSEMENT, R_FOAD];
+$R_ALL = [R_ADMINISTRATEUR, R_COMPOSANTE, R_DRH, R_ETABLISSEMENT, R_INTERVENANT];
+$R_NOT_INTERVENANT = [R_ADMINISTRATEUR, R_COMPOSANTE, R_DRH, R_ETABLISSEMENT];
+$R_COMMUN = [R_ADMINISTRATEUR, R_DRH, R_ETABLISSEMENT];
 
 $main =  [
     'doctrine' => [
@@ -158,22 +140,9 @@ $main =  [
                 'Application\\Acl\\AdministrateurRole',
 
                 'Application\\Acl\\ComposanteRole',
-                    'Application\\Acl\\DirecteurComposanteRole',
-                    'Application\\Acl\\GestionnaireComposanteRole',
-                    'Application\\Acl\\ResponsableComposanteRole',
-                    'Application\\Acl\\SuperviseurComposanteRole',
-                    'Application\\Acl\\ResponsableRechercheLaboRole',
 
                 'Application\\Acl\\DrhRole',
-                    'Application\\Acl\\GestionnaireDrhRole',
-                    'Application\\Acl\\ResponsableDrhRole',
-
                 'Application\\Acl\\EtablissementRole',
-                    'Application\\Acl\\SuperviseurEtablissementRole',
-
-                'Application\\Acl\\FoadRole',
-                    'Application\\Acl\\ResponsableFoadRole',
-
                 'Application\\Acl\\IntervenantRole',
                     'Application\\Acl\\IntervenantExterieurRole',
                     'Application\\Acl\\IntervenantPermanentRole',
diff --git a/module/Application/config/notification.config.php b/module/Application/config/notification.config.php
index ad0b0239a9..ed18947dd5 100644
--- a/module/Application/config/notification.config.php
+++ b/module/Application/config/notification.config.php
@@ -2,24 +2,8 @@
 
 namespace Application;
 
-use Application\Acl\Role;
 use Application\Acl\AdministrateurRole;
 use Application\Acl\ComposanteRole;
-use Application\Acl\DirecteurComposanteRole;
-use Application\Acl\GestionnaireComposanteRole;
-use Application\Acl\ResponsableComposanteRole;
-use Application\Acl\SuperviseurComposanteRole;
-use Application\Acl\ResponsableRechercheLaboRole;
-use Application\Acl\DrhRole;
-use Application\Acl\GestionnaireDrhRole;
-use Application\Acl\ResponsableDrhRole;
-use Application\Acl\EtablissementRole;
-use Application\Acl\SuperviseurEtablissementRole;
-use Application\Acl\IntervenantRole;
-use Application\Acl\IntervenantPermanentRole;
-use Application\Acl\IntervenantExterieurRole;
-use Application\Acl\FoadRole;
-use Application\Acl\ResponsableFoadRole;
 
 return [
     'router' => [
diff --git a/module/Application/config/offre-formation.config.php b/module/Application/config/offre-formation.config.php
index 358359837c..b3d9c7b4cc 100644
--- a/module/Application/config/offre-formation.config.php
+++ b/module/Application/config/offre-formation.config.php
@@ -2,24 +2,9 @@
 
 namespace Application;
 
-use Application\Acl\Role;
 use Application\Acl\AdministrateurRole;
 use Application\Acl\ComposanteRole;
-use Application\Acl\DirecteurComposanteRole;
-use Application\Acl\GestionnaireComposanteRole;
-use Application\Acl\ResponsableComposanteRole;
-use Application\Acl\SuperviseurComposanteRole;
-use Application\Acl\ResponsableRechercheLaboRole;
-use Application\Acl\DrhRole;
-use Application\Acl\GestionnaireDrhRole;
-use Application\Acl\ResponsableDrhRole;
-use Application\Acl\EtablissementRole;
-use Application\Acl\SuperviseurEtablissementRole;
 use Application\Acl\IntervenantRole;
-use Application\Acl\IntervenantPermanentRole;
-use Application\Acl\IntervenantExterieurRole;
-use Application\Acl\FoadRole;
-use Application\Acl\ResponsableFoadRole;
 
 return [
     'router' => [
diff --git a/module/Application/config/service.config.php b/module/Application/config/service.config.php
index c592da77df..2daa07b949 100644
--- a/module/Application/config/service.config.php
+++ b/module/Application/config/service.config.php
@@ -231,7 +231,7 @@ return [
                 ], [
                     'controller' => 'Application\Controller\Service',
                     'action' => ['resume','resume-refresh','recherche'],
-                    'roles' => [R_ADMINISTRATEUR, R_COMPOSANTE, R_RESPONSABLE_RECHERCHE_LABO, R_DRH, R_ETABLISSEMENT, R_FOAD]
+                    'roles' => [R_ADMINISTRATEUR, R_COMPOSANTE, R_DRH, R_ETABLISSEMENT]
                 ], [
                     'controller' => 'Application\Controller\ServiceReferentiel',
                     'action' => ['index', 'saisie', 'suppression', 'rafraichir-ligne', 'constatation'],
diff --git a/module/Application/config/structure.config.php b/module/Application/config/structure.config.php
index e7aaa6a119..dba2b51255 100644
--- a/module/Application/config/structure.config.php
+++ b/module/Application/config/structure.config.php
@@ -2,24 +2,9 @@
 
 namespace Application;
 
-use Application\Acl\Role;
 use Application\Acl\AdministrateurRole;
 use Application\Acl\ComposanteRole;
-use Application\Acl\DirecteurComposanteRole;
-use Application\Acl\GestionnaireComposanteRole;
-use Application\Acl\ResponsableComposanteRole;
-use Application\Acl\SuperviseurComposanteRole;
-use Application\Acl\ResponsableRechercheLaboRole;
-use Application\Acl\DrhRole;
-use Application\Acl\GestionnaireDrhRole;
-use Application\Acl\ResponsableDrhRole;
-use Application\Acl\EtablissementRole;
-use Application\Acl\SuperviseurEtablissementRole;
 use Application\Acl\IntervenantRole;
-use Application\Acl\IntervenantPermanentRole;
-use Application\Acl\IntervenantExterieurRole;
-use Application\Acl\FoadRole;
-use Application\Acl\ResponsableFoadRole;
 
 return [
     'router' => [
diff --git a/module/Application/config/validation.config.php b/module/Application/config/validation.config.php
index d1da127cb7..ffcefa4fbc 100644
--- a/module/Application/config/validation.config.php
+++ b/module/Application/config/validation.config.php
@@ -2,24 +2,11 @@
 
 namespace Application;
 
-use Application\Acl\Role;
 use Application\Acl\AdministrateurRole;
 use Application\Acl\ComposanteRole;
-use Application\Acl\DirecteurComposanteRole;
-use Application\Acl\GestionnaireComposanteRole;
-use Application\Acl\ResponsableComposanteRole;
-use Application\Acl\SuperviseurComposanteRole;
-use Application\Acl\ResponsableRechercheLaboRole;
-use Application\Acl\DrhRole;
-use Application\Acl\GestionnaireDrhRole;
-use Application\Acl\ResponsableDrhRole;
-use Application\Acl\EtablissementRole;
-use Application\Acl\SuperviseurEtablissementRole;
 use Application\Acl\IntervenantRole;
-use Application\Acl\IntervenantPermanentRole;
 use Application\Acl\IntervenantExterieurRole;
-use Application\Acl\FoadRole;
-use Application\Acl\ResponsableFoadRole;
+
 
 use Application\Assertion\AbstractAssertion;
 
diff --git a/module/Application/config/workflow.config.php b/module/Application/config/workflow.config.php
index f1d41cedcb..ffa6fe9062 100644
--- a/module/Application/config/workflow.config.php
+++ b/module/Application/config/workflow.config.php
@@ -2,25 +2,6 @@
 
 namespace Application;
 
-use Application\Acl\Role;
-use Application\Acl\AdministrateurRole;
-use Application\Acl\ComposanteRole;
-use Application\Acl\DirecteurComposanteRole;
-use Application\Acl\GestionnaireComposanteRole;
-use Application\Acl\ResponsableComposanteRole;
-use Application\Acl\SuperviseurComposanteRole;
-use Application\Acl\ResponsableRechercheLaboRole;
-use Application\Acl\DrhRole;
-use Application\Acl\GestionnaireDrhRole;
-use Application\Acl\ResponsableDrhRole;
-use Application\Acl\EtablissementRole;
-use Application\Acl\SuperviseurEtablissementRole;
-use Application\Acl\IntervenantRole;
-use Application\Acl\IntervenantPermanentRole;
-use Application\Acl\IntervenantExterieurRole;
-use Application\Acl\FoadRole;
-use Application\Acl\ResponsableFoadRole;
-
 return [
     'router' => [
         'routes' => [
diff --git a/module/Application/src/Application/Acl/ComposanteRole.php b/module/Application/src/Application/Acl/ComposanteRole.php
index 89fe4d94b9..434a2653ad 100644
--- a/module/Application/src/Application/Acl/ComposanteRole.php
+++ b/module/Application/src/Application/Acl/ComposanteRole.php
@@ -2,7 +2,6 @@
 
 namespace Application\Acl;
 
-use UnicaenAuth\Acl\NamedRole;
 use Application\Interfaces\StructureAwareInterface;
 use Application\Traits\StructureAwareTrait;
 use Application\Interfaces\PersonnelAwareInterface;
@@ -79,23 +78,3 @@ class ResponsableComposanteRole extends ComposanteRole
         parent::__construct($id, $parent, $name, $description, $selectable);
     }
 }
-
-class SuperviseurComposanteRole extends ComposanteRole
-{
-    const ROLE_ID = 'superviseur-composante';
-
-    public function __construct($id = self::ROLE_ID, $parent = ComposanteRole::ROLE_ID, $name = 'Superviseur de composante', $description = null, $selectable = true)
-    {
-        parent::__construct($id, $parent, $name, $description, $selectable);
-    }
-}
-
-class ResponsableRechercheLaboRole extends ComposanteRole
-{
-    const ROLE_ID = 'responsable-recherche-labo';
-
-    public function __construct($id = self::ROLE_ID, $parent = ComposanteRole::ROLE_ID, $name = 'Responsable d\'équipe de recherche', $description = null, $selectable = true)
-    {
-        parent::__construct($id, $parent, $name, $description, $selectable);
-    }
-}
\ No newline at end of file
diff --git a/module/Application/src/Application/Acl/DrhRole.php b/module/Application/src/Application/Acl/DrhRole.php
index 628d8dbe0f..92f0111848 100644
--- a/module/Application/src/Application/Acl/DrhRole.php
+++ b/module/Application/src/Application/Acl/DrhRole.php
@@ -22,23 +22,3 @@ class DrhRole extends Role implements PersonnelAwareInterface
         parent::__construct($id, $parent, $name, $description, $selectable);
     }
 }
-
-class GestionnaireDrhRole extends DrhRole
-{
-    const ROLE_ID = 'gestionnaire-drh';
-
-    public function __construct($id = self::ROLE_ID, $parent = DrhRole::ROLE_ID, $name = 'Gestionnaire DRH', $description = null, $selectable = true)
-    {
-        parent::__construct($id, $parent, $name, $description, $selectable);
-    }
-}
-
-class ResponsableDrhRole extends DrhRole
-{
-    const ROLE_ID = 'responsable-drh';
-
-    public function __construct($id = self::ROLE_ID, $parent = DrhRole::ROLE_ID, $name = 'Responsable DRH', $description = null, $selectable = true)
-    {
-        parent::__construct($id, $parent, $name, $description, $selectable);
-    }
-}
\ No newline at end of file
diff --git a/module/Application/src/Application/Acl/EtablissementRole.php b/module/Application/src/Application/Acl/EtablissementRole.php
index 2471d35ea8..6ca99cd5c4 100644
--- a/module/Application/src/Application/Acl/EtablissementRole.php
+++ b/module/Application/src/Application/Acl/EtablissementRole.php
@@ -23,13 +23,3 @@ class EtablissementRole extends Role implements PersonnelAwareInterface
     }
 
 }
-
-class SuperviseurEtablissementRole extends EtablissementRole
-{
-    const ROLE_ID = 'superviseur-etablissement';
-
-    public function __construct($id = self::ROLE_ID, $parent = EtablissementRole::ROLE_ID, $name = 'Superviseur établissement', $description = null, $selectable = true)
-    {
-        parent::__construct($id, $parent, $name, $description, $selectable);
-    }
-}
\ No newline at end of file
diff --git a/module/Application/src/Application/Acl/FoadRole.php b/module/Application/src/Application/Acl/FoadRole.php
deleted file mode 100644
index f96b472a89..0000000000
--- a/module/Application/src/Application/Acl/FoadRole.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-
-namespace Application\Acl;
-
-use UnicaenAuth\Acl\NamedRole;
-use Application\Interfaces\PersonnelAwareInterface;
-use Application\Traits\PersonnelAwareTrait;
-
-/**
- * Rôle père de tous les rôles "foad".
- *
- * @author Laurent LÉCLUSE <laurent.lecluse at unicaen.fr>
- */
-class FoadRole extends Role implements PersonnelAwareInterface
-{
-    use PersonnelAwareTrait;
-
-    const ROLE_ID = 'foad';
-
-    public function __construct($id = self::ROLE_ID, $parent = Role::ROLE_ID, $name = 'Foad', $description = null, $selectable = true)
-    {
-        parent::__construct($id, $parent, $name, $description, $selectable);
-    }
-
-}
-
-class ResponsableFoadRole extends FoadRole
-{
-    const ROLE_ID = 'responsable-foad';
-
-    public function __construct($id = self::ROLE_ID, $parent = FoadRole::ROLE_ID, $name = 'Responsable FOAD', $description = null, $selectable = true)
-    {
-        parent::__construct($id, $parent, $name, $description, $selectable);
-    }
-}
\ No newline at end of file
diff --git a/module/Application/src/Application/Provider/Role/RoleProvider.php b/module/Application/src/Application/Provider/Role/RoleProvider.php
index fa05bb9c9c..7f3a892366 100644
--- a/module/Application/src/Application/Provider/Role/RoleProvider.php
+++ b/module/Application/src/Application/Provider/Role/RoleProvider.php
@@ -68,23 +68,18 @@ class RoleProvider implements ProviderInterface, EntityManagerAwareInterface
     protected function makeRoles()
     {
         $roles = [];
-$roles['test'] = new Role( 'test', 'user', 'Rôle de test');
-        /* deprecated */
-        foreach( $this->config as $classname ){
-            if (class_exists( $classname )){
-                $role = new $classname; /* @var $role RoleInterface */
-                $roles[$role->getRoleId()] = $role;
-            }else{
-                throw new LogicException('La classe "'.$classname.'" déclarée dans la configuration du fournisseur de rôles n\'a pas été trouvée.');
-            }
-        }
-        /* fin de deprecated */
+        $r = new Role();                                        $roles[$r->getRoleId()] = $r;
+        $r = new \Application\Acl\ComposanteRole();             $roles[$r->getRoleId()] = $r;
+        $r = new \Application\Acl\DrhRole();                    $roles[$r->getRoleId()] = $r;
+        $r = new \Application\Acl\EtablissementRole();          $roles[$r->getRoleId()] = $r;
+        $r = new \Application\Acl\IntervenantRole();            $roles[$r->getRoleId()] = $r;
+        $r = new \Application\Acl\IntervenantExterieurRole();   $roles[$r->getRoleId()] = $r;
+        $r = new \Application\Acl\IntervenantPermanentRole();   $roles[$r->getRoleId()] = $r;
         
         $serviceAuthUserContext = $this->getServiceLocator()->get('AuthUserContext');
         /* @var $serviceAuthUserContext \UnicaenAuth\Service\UserContext */
         $utilisateur = $serviceAuthUserContext->getDbUser();
 
-
         /* Cas spécifique du rôle intervenant */
         if ($utilisateur && $utilisateur->getIntervenant()){
             $role = new IntervenantRole;
@@ -93,66 +88,57 @@ $roles['test'] = new Role( 'test', 'user', 'Rôle de test');
         }
 
         /* Rôles du personnel */
-        if ($utilisateur && ($personnel = $utilisateur->getPersonnel())){
-            // chargement des rôles métiers
-            $qb = $this->getEntityManager()->createQueryBuilder()
-                ->from("Application\Entity\Db\Affectation", "a")
-                ->select("a, r, s")
-                ->distinct()
-                ->join("a.role", "r")
-                ->leftJoin("a.structure", "s")
-                ->andWhere('1=compriseEntre(a.histoCreation,a.histoDestruction)')
-                ->andWhere('1=compriseEntre(r.histoCreation,r.histoDestruction)')
-                ->andWhere("a.personnel = :personnel")->setParameter(':personnel', $personnel);
-            foreach ($qb->getQuery()->getResult() as $affectation) { /* @var $affectation Affectation */
-                 $dbRole = $affectation->getRole();
-
-                $roleId = $dbRole->getCode();
-                $roleLibelle = $dbRole->getLibelle();
+        $personnel = null;
+        if ($utilisateur) $personnel = $utilisateur->getPersonnel();
+
+        // chargement des rôles métiers
+        $qb = $this->getEntityManager()->createQueryBuilder()
+            ->from("Application\Entity\Db\Role", "r")
+            ->select("r, a, s")
+            ->distinct()
+            ->leftJoin("r.affectation", "a", \Doctrine\ORM\Query\Expr\Join::WITH, '1=compriseEntre(a.histoCreation,a.histoDestruction) AND a.personnel = :personnel')
+            ->leftJoin("a.structure", "s")
+            ->andWhere('1=compriseEntre(r.histoCreation,r.histoDestruction)')
+            ->setParameter(':personnel', $personnel);
+
+        foreach ($qb->getQuery()->getResult() as $dbRole) { /* @var $dbRole \Application\Entity\Db\Role */
+            $roleId = $dbRole->getCode();
+
+            $roleClass = 'Application\Acl\Role';
+            $parent = 'user';
+            /** @deprecated */
+            if ($roleId == 'gestionnaire-composante')   { $roleClass = 'Application\Acl\GestionnaireComposanteRole'; $parent='composante';}
+            if ($roleId == 'directeur-composante')      { $roleClass = 'Application\Acl\DirecteurComposanteRole';    $parent='composante';}
+            if ($roleId == 'administrateur')            { $roleClass = 'Application\Acl\AdministrateurRole';}
+            if ($roleId == 'responsable-composante')    { $roleClass = 'Application\Acl\ResponsableComposanteRole';  $parent='composante';}
+            if ($roleId == 'superviseur-etablissement') { $roleClass = 'Application\Acl\EtablissementRole'; }
+            if ($roleId == 'gestionnaire-drh')          { $roleClass = 'Application\Acl\DrhRole'; }
+            /* FIN de deprecated */
+
+            $role = new $roleClass( $roleId, $parent, $dbRole->getLibelle() );
+            $role->setDbRole($dbRole);
+            $role->setPersonnel($personnel);
+
+            $roles[$roleId] = $role;
+
+            $affectations = $dbRole->getAffectation();
+            foreach( $affectations as $affectation ){ /* @var $affectation Affectation */
                 if ($structure = $affectation->getStructure()){
-                    $roleId .= '-'.$structure->getSourceCode();
-                    $roleLibelle .= ' ('.$structure->getLibelleCourt().')';
-                }
-
-                /** @deprecated */
-                $parents = [
-                    'gestionnaire-composante',
-                    'responsable-recherche-labo',
-                    'directeur-composante',
-                    'administrateur',
-                    'responsable-composante',
-                    'superviseur-etablissement',
-                ];
-                if (in_array($dbRole->getCode(), $parents)){
-                    $parent = $dbRole->getCode();
-                }else{
-                    $parent = 'user';
-                }
-
-                if (isset($roles[$roleId])){
-                    $role = $roles[$roleId];
-                }else{
-                    $role = new Role( $roleId, $parent, $roleLibelle);
+                    $affRoleId = $roleId.'-'.$structure->getSourceCode();
+                    if (! isset($roles[$affRoleId])){
+                        $affRoleLibelle = $dbRole->getLibelle().' ('.$structure->getLibelleCourt().')';
+                        $affRole = new $roleClass( $affRoleId, $roleId, $affRoleLibelle );
+                        $affRole->setDbRole( $dbRole );
+                        $affRole->setPersonnel( $personnel );
+                        $affRole->setStructure( $structure );
+                        $roles[$affRoleId] = $affRole;
+                    }
                 }
-
-                /* fin de deprecated */
-
-                //$role = new Role( $roleId, 'user', $roleLibelle);
-                $role->setDbRole( $dbRole );
-                $role->setPersonnel( $personnel );
-
-                if ($this->structureSelectionnee){
-                    $role->setStructure( $this->structureSelectionnee );
-                }else{
-                    $role->setStructure( $affectation->getStructure() );
-                }
-
-                $roles[$roleId] = $role;
             }
         }
         return $roles;
     }
-    
+
     public function setStructureSelectionnee(StructureEntity $structureSelectionnee = null)
     {
         $this->structureSelectionnee = $structureSelectionnee;
-- 
GitLab