diff --git a/module/Application/config/agrement.config.php b/module/Application/config/agrement.config.php index c7c882a005f3a29903b26a316c1e65d3accca6cb..c30f86f1c60e4a3e96a432e273269e6e54a7b5cb 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 2abb80e1ec56cbe49ab213de6fc5ac7cedaf8f40..b579fede91f03bc538bfc01768dd387f319a6d30 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 a703cf58ec23ddbf4fd4a3c1db0c7c8a56eb1463..bd2c6d9105812b76992e65a1274d4c9956871b68 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 73ca7c05c70731ddd045f69e10e6f5433144a6fc..4160cf31dbb99b00719ca49d63b61ac685bb3d8a 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 bebe4445c083543fd4a38973fd51834e8c1a7045..aab83a8293c303846df809332d73abfb39b9469d 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 ad0b0239a95d5f823546137c4d5cef3e98fc07fb..ed18947dd51f7d5a1b850ad49ecf680b826f0beb 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 358359837c1284f5885919251b028abe725fd70b..b3d9c7b4cce3ca290bad30c8767743a3c73f15a2 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 c592da77dfeeb5876f63d7276b714f90315eb2d6..2daa07b949956adb0d5c48a42c3a680209eac748 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 e7aaa6a11926f03da45ba376373eece26ce6cb24..dba2b51255f36a4255c69b742b1c224c8af3e5b9 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 d1da127cb7296c82b9491c2d9820cdb3b85e084f..ffcefa4fbc245cf627d4d610017900164c5ac907 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 f1d41cedcb80fd5a905d330157c85d197fbab7c3..ffa6fe9062222ff396c16a2bae365bd837b5de60 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 89fe4d94b90416774d3af00d11531ad7ad9186f8..434a2653ad17e3868d48553a2909975273157bd1 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 628d8dbe0f8befb634ff0140e1ec2269d00977dd..92f011184832eb92d31e066819c6cda350ac57bd 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 2471d35ea86a658ba9e3742a081747b46e40dac9..6ca99cd5c447498b61dbefa15c5c3891520ddf77 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 f96b472a89857ef08b779d02a1fd398ce0efa7ba..0000000000000000000000000000000000000000 --- 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 fa05bb9c9cfd3f38042c6099115b858145d0d60f..7f3a892366def58ce7249d3a0abedca235546b66 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;